c# - 例外:“无效的网络资源请求”
问题描述
我们的 ASP .NET Webforms 应用程序有一个奇怪的异常。有时会在不同的 .aspx 页面
中引发相同的异常:
来源是 System.Web
这是一个无效的网络资源请求。在 System.Web.Handlers.AssemblyResourceLoader.System.Web.IHttpHandler.ProcessRequest(HttpContext context) 在 System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() 在 System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep步骤)在 System.Web.HttpApplication.ExecuteStep(IExecutionStep 步骤,布尔和完成同步)
它在我们将服务器从Windows Server 2012 R2升级到Windows Server 2016后开始。
我试过了:
- 将 .Net Framework 升级到最新的4.7.2
- 应用此处所述的安全补丁
- 确保它不是此处所述的爬行机器人 (即使通过我们的 IP 浏览页面时有时也会引发异常)
- 这个答案,#1 完成,#2 无关紧要,因为它也来自我们的 IP,#3 我们不运行任何农场。
问题是我们在 上看不到这些异常localhost
,也不知道如何在服务器上调试它的原因。
任何想法将不胜感激。
解决方案
这是评论而不是答案。但我刚刚注册,没有足够的声誉发表评论。道歉。
这些对 WebResource.axd 的无效请求之所以发生,是因为 URL 中的所有加密垃圾都没有解密为服务器上任何有意义的东西。发生这种情况的原因有几个:
- 客户端/浏览器缓存了在最近的服务器补丁更改服务器端的加密/解密工作方式之前的旧链接 - 例如您的链接之一引用的 MS10-070 补丁。我不希望这些无效请求在您的日志中非常多,它们最终应该会消失。我不知道最近有任何像这样影响 ASP.Net 的补丁,所以这可能不是你的问题。
- 恶意代理正在扫描以查看您的站点是否容易受到攻击。再次,MS10-070 修补的漏洞就是我脑海中浮现的例子。如果是这种情况,您可能会看到多次尝试使用稍微不同的查询字符串访问 WebResource.axd,同时它会探测所需的信息。仅仅因为您已经修补了您的服务器,这并不一定意味着您不会看到恶意代理检查您的站点。
- 这可能是您的客户的错误。几年前,IE8 有一个错误会破坏这些 WebResource 字符串的加密部分。您的服务器日志是否跟踪客户端的用户代理字符串?这些错误请求是否来自同一个客户端?相同系列/版本的浏览器?
此查询字符串可能会以多种方式被占用,其中大多数发生在它以有效响应离开服务器和在后续请求中返回之间的时间。这里有一些我会回答的问题,以帮助缩小问题的范围。导致错误的 url 实际上是无效的吗?还是那个完全相同的网址在大多数情况下都会导致成功?您知道正在提供的页面包含指向此特定 WebResource.axd 的链接吗?如果您手动请求它,预期的查询字符串是什么样的?它与坏字符串有多相似?
推荐阅读
- c - 输入错误后程序发疯(C)
- jquery - 使用数据属性作为选择器的最短方法是什么?
- php - 如何使用codeigniter显示mysql数据透视表数据
- json - 如何使用对象映射器快速解析我们解析数组的字典
- if-statement - 元组中带有搜索文本条件的 if 语句
- python - 当我打开这个抓取代码时,结果是空的
- android - 如何仅在连接到某些网络或 VPN 时运行 android 应用程序?
- jenkins - 使用 Jenkins 为本地 kubernetes 集群实施 CD?
- java - 如何按意图插入联系人生日日期
- ubuntu - 用来自另一个文件的不同文本逐行替换部分行