原始问题:
我们在生成 WebResource.axd url 时遇到了一个奇怪的错误。(这似乎与相当常见的“WebRsource.axd 填充无效且无法删除”问题无关)。
我们有一个 ASP.NET 网页,它在创建时会添加对 WebResource.axd 的脚本引用。
在这种情况下,我们看到 WebResource.axd 链接偶尔会在某个时间点变成垃圾,取而代之的是看起来像 javascript 的内容。更糟糕的是,url 生成失败似乎并不一致。
在我们的例子中,链接应该(并且通常看起来像):
/WebResource.axd?d=D-wd7RbHCvSp_p0mHAmE4g2&t=633464867255568315
一切都很好。但是,我们收到用户记录的错误......他们尝试访问的 url 看起来像(在一种情况下):
/WebResource.axd?d=D-wd7RbHCvS/../../images/icons/Ico_resize.gif')}}function%20ShowFilter_Manufacturer(){var%20div.......
[该链接中剩余的编码 javascript 已被删除,因为不相关]
更奇怪的是,我们从同一个用户那里快速连续地获得了其中的一些,显然他正试图重新加载页面......每个 url 略有不同。
/WebResource.axd?d=D-wd7RbHCvS<garbage>
/WebResource.axd?d=D-wd7RbHCvSp<garbage>
/WebResource.axd?d=D-wd7RbHCvSp_<garbage>
在某些情况下,垃圾是用 JavaScript 编码的,我看到了 url 的一部分……完全为空的参数字符串……我没有看到明显的模式。
顺便说一句,如果它是相关的,应该注意的是,我不相信这个 WebResource 不是股票 WebResource 之外的任何东西,当页面上包含某些功能时,.NET 会自动包含它......在这种情况下,一个字段验证器。查看实际 WebResource.axd 的内容会发现一组看起来非常标准的 Javascript 函数,这些函数似乎旨在处理通用 .NET 事件。不是我们创造的任何东西。
有没有人见过这样的事情?(或者更好的是,有没有人理解为什么会发生这种情况,并想出一种方法来消除它?)
编辑 0:一些附加信息:
第 1 项:针对一个答案,我们确保我们的脚本用 CDATA 标记封装,因为我们的 doctype 是 xhtml 过渡:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
不幸的是,虽然我们寄予厚望,但它似乎并没有解决问题。我们在 IE 8 作为浏览器时更经常注意到这一点,这会让人相信这是与浏览器相关的想法......也许是浏览器解析流的方式......但是为什么我们会得到微妙的不同响应在随后的尝试中让我感到困惑。
第 2 项:事实证明,省略的部分似乎是相当规则大小的块。有人报告说他看到 1k 或 4k 块丢失,我(到目前为止……我只看过两个案例)会同意(我的都丢失了 4096 字节的数据)。