我在IIS 7.5下运行ASP.NET Web应用程序,我的应用程序日志中充满了这样的错误:
活动代码:3012
事件消息:处理Web或脚本资源时发生错误 请求。资源标识符无法解密。
...
异常信息:
Exception type: HttpException Exception message: Unable to validate data.
在 System.Web.Configuration.MachineKeySection.EncryptOrDecryptData(布尔 fEncrypt,Byte [] buf,Byte []修饰符,Int32 start,Int32 length, Boolean useValidationSymAlgo,Boolean useLegacyMode,IVType ivType, 布尔符号数据)
...
请求信息:
Request URL: http://www.mysite.com/WebResource.axd?d=l0ngstr1ng0fl3tt3rs4ndd1g1ts Request path: /WebResource.axd
...
如何防止它们出现?根据{{3}},我已将以下代码添加到我的Global.asax文件中:
void Application_Error(object sender, EventArgs e)
{
// Code that runs when an *unhandled* error occurs
//// get reference to the source of the exception chain
Exception ex = Server.GetLastError();
string message = ex.Message;
string path = Request.Path;
// ignore the following:
// errors due to bots trying AXD URLs
// errors due to <doNastyThings /> tags in the URLs
if (
(ex is HttpException && (path.StartsWith("/WebResource.axd") || path.StartsWith("/ScriptResource.axd"))) ||
(ex is HttpException && message.StartsWith("A potentially dangerous Request.Path value was detected from the client"))
)
{
// clear the error *to prevent it from appearing in the main Application log*
Server.ClearError();
// need to manually direct to the error page, since it will no longer happen automatically once the error has been cleared
Response.Redirect("/Error");
}
}
此代码正在捕获和抑制第二组错误(针对潜在危险请求);但是,在执行此代码时,WebResource.axd错误已写入应用程序日志。我假设这是因为AXD处理程序在错误记录方面与标准ASPX处理程序的工作方式不同(但我不知道该做什么)。
感谢所有的帮助!
答案 0 :(得分:8)
当我收到Bingbot抓取工具的请求时,我才会收到此错误消息。你可以检查它是否是bing bot here
所以我在robots.txt文件中添加了这个。如果您没有特别添加它是用户代理Bingbot
,则它不起作用User-agent: bingbot
Disallow: /ScriptResource.axd
Disallow: /combinescriptshandler.axd
Disallow: /WebResource.axd
答案 1 :(得分:2)
/WebResource.axd,因为页面包含指向它的链接,通常是img src:
<img ... src="/WebResource.axd..." />
通常从ASP.NET WebControl生成,例如菜单控件。
我建议您找到包含WebResource.axd引用的页面,查看它的生成方式和原因,以及它无效的原因。例如,您可以查看IIS服务器日志以查找紧接WebResource.axd请求之前的页面,或者您可以将自己的日志记录添加到Application_BeginRequest。
一旦找到有问题的页面,并确定页面上的哪个控件正在生成请求,请再次询问。
我过去在静态HTML页面中看到过这种情况,其中包含从呈现的ASPX页面复制并粘贴的HTML(例如菜单)。该请求在静态HTML页面中无效,修复只是删除有问题的img元素。
答案 2 :(得分:2)
当Bingbot做了一些非常愚蠢的事情并将其请求的URL缩小时,可能会导致这些错误。
我不知道为什么会这样做,但事件日志中列出的URL实际上是从受影响的页面链接的 - 只有一些大写字母!例如,HTML中的实际链接:
https://example.com/WebResource.axd?d=[...]13QzJRP4goegQTwpQQcl[...]
bingbot要求的相同链接:
https://example.com/webresource.axd?d=[...]13qzjrp4goegqtwpqqcl[...]
哦,好吧......这些显然是无害的错误被忽视或压制。