我们对WebResource.axd网址生成有一个奇怪的错误. (它似乎与相当常见的“WebRsource.axd Padding无效,无法删除”相关).
我们有一个ASP.NET网页,当创建时,向WebResource.axd添加一个脚本引用.
在这种情况下,我们看到WebResource.axd链接有时会变成一个垃圾,通过一些特定的东西,由什么看起来像javascript.更糟糕的是,网址生成失败似乎是不一致的.
在我们的例子中,链接应该(通常是这样):
/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个字节的数据).
解决方法
http://bytes.com/topic/asp-net/answers/861764-invalid-viewstate-system-string-decryptstringwithiv
似乎问题是由于浏览器在没有指定doctype的情况下以不同的方式呈现页面造成的.
这是另一个有趣的帖子,我发现这个问题,仍然不是解决方案:
http://blog.aproductofsociety.org/?p=11
在上面的页面上,它具有“Response.Cache.SetNoStore()”作为注释中的一个可能的解决方案,我会尝试下面看看它是否有帮助.