有时(随机)我的 asp.net mvc 应用程序输出页面,其中单个字符被奇怪的问号替换,如图所示
此行为在数据更改之前一直保持不变,并且不会随着页面刷新而消失。整个页面都是格鲁吉亚语 unicode。我正在使用 asp.net mvc 3 与 Visual Studio 2010 和 iis Express。在 IIS 7.5 的发布站点上也观察到了这一点。我也在 ASP.NET WebForms 应用程序中看到了类似的问题。
我不仅在数据库提供的数据上观察到这种行为,而且在使用 html 助手生成的简单 anchor 上观察到这种行为
TagBuilder addAnchor = new TagBuilder("a");
addAnchor.AddCssClass("add-item");
addAnchor.MergeAttribute("href", "#");
addAnchor.SetInnerText(SharedResources.Add); //resource item contains string დამატება
输出 anchor “დამატ���ბა”
这不是浏览器端页面渲染的问题,因为原始响应已经包含这些符号。
更新:
看起来,通过设置 Response.BufferOutput = false; 来禁用缓冲区输出会从页面中删除奇怪的字符。但我用Cassette用于引用包,并且它无法与禁用的缓冲区输出一起使用 - 页面上没有引用任何脚本或样式表。
有人遇到过类似的问题吗?这对我来说实际上很重要,因为目前它会影响数据,其中被损坏的单个字符是多选测试问题的正确答案信息。
最佳答案
我也有同样的错误。它是 Cassette,具有重写结果 HTML 内容(并且需要将 BufferOutput 设置为 true)的功能,以便在需要时将引用的脚本和样式表标记移动到顶部。 请参阅 http://getcassette.net/documentation/configuration 处的 IsHtmlRewritingEnabled 选项。 当我关闭此功能后,该错误就消失了。
我的观察:
- 它仅在远程请求时出现。本地请求总是可以的。
- 对于所有客户端、浏览器和计算机来说,问号的位置始终保持不变。
- 问号的位置仅在重新编译应用程序后才会更改。
关于asp.net - asp.net mvc 页面上输出奇怪的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10329385/