2012-04-26 166 views
2
asp.net MVC頁

有時(隨機地)我的asp.net MVC應用程序輸出頁上,其中單個字符被替換爲怪異問號,使圖像奇怪的字符輸出

enter image description here

此現象如圖所示在數據改變之前是恆定的,並且在頁面刷新時它不會消失。整個頁面在格魯吉亞unicode。我使用Visual Studio 2010和iis express來使用asp.net mvc 3。在發佈的站點上也會觀察到IIS 7.5。我在asp.net webforms應用程序中也見過類似的問題。

我觀察到這種行爲不僅對數據庫提供的數據,但簡單的錨,用HTML輔助

TagBuilder addAnchor = new TagBuilder("a"); 
addAnchor.AddCssClass("add-item"); 
addAnchor.MergeAttribute("href", "#"); 
addAnchor.SetInnerText(SharedResources.Add); //resource item contains string დამატება 

其輸出主播「დამატბა」

產生,這是不是因爲原始響應已經包含這些符號,所以在瀏覽器端會出現頁面渲染問題。

更新:

,因爲它似乎,通過設置Response.BufferOutput = false;禁用緩衝輸出從頁面移除奇怪的字符。但是我使用Cassette來引用bundle,並且它不能用於禁用的緩衝區輸出 - 不在頁面上引用scipt或樣式表。

有沒有人有類似的問題?這對我來說實際上是至關重要的,因爲它目前影響的數據是單個字符受損的數據是多選測試問題的正確答案信息。

+0

的一部分列出你能瑞普問題?你能顯示一些代碼嗎? – 2012-04-26 08:01:29

+0

@DarinDimitrov我很困惑,因爲我不知道要顯示什麼代碼。我只是從我的動作返回View(viewModel),就像我爲應用中的所有動作一樣。這種情況出乎意料地發生。數據更改時,相同的操作,相同的視圖不包含此錯誤。 – archil 2012-04-26 08:05:14

+0

你是否從數據庫中獲取這些數據? – Aristos 2012-04-26 08:07:23

回答

3

我有同樣的錯誤。它是Cassette的一個功能,可以將結果HTML內容重寫(並且需要將BufferOutput設置爲true),以便在需要時將引用的腳本和樣式表標籤移動到頂部。 請參閱IsHtmlRewritingEnabled選項http://getcassette.net/documentation/configuration。 當我關閉此功能時,該錯誤消失。

我的意見:

  1. 它僅出現與遠程請求。本地請求總是可以的。
  2. 問號的位置對所有客戶端,瀏覽器和計算機而言都是恆定的。
  3. 只有在重新編譯應用程序後,問號的位置纔會更改。
0

我會想象這是關於字符集。當我嘗試顯示不屬於特定字符集的字符時,我遇到了這個問題。

如UTF-8中的’ or – (’ or –)當字符先前未被HTML編碼時。

+0

整個應用程序的工作方式。在意外情況下會出現此行爲。 – archil 2012-04-26 16:45:17

0

我也有這樣的輸出。在我的情況下,錯誤的來源是在Views/web.config中。的組件在頁面/命名空間,這是不是引用的程序集