【发布时间】:2011-02-14 03:50:06
【问题描述】:
我有一个大型 .NET 2 Web 应用程序,该应用程序已针对 .NET 4.0 框架进行了更新。自更新以来,我的日志中经常出现以下错误:
这是一个无效的网络资源 请求。
请求的资源是“~/WebResource.axd” 据我所知,请求看起来不错,因为有一个长查询字符串,其中包含键(键是 d、t)和这些键的值。
生成对 WebResource.axd 的请求的机制是否在不同框架版本之间发生了变化?有人对如何调试此问题有任何建议吗?
编辑:
我找到了一种解密 Web 资源请求查询字符串的方法(代码如下)。请求的资源是pCSSFriendly|CSSFriendly.CSS.Menu.css,这看起来像是解决应用程序使用的 CSSFriendly.MenuAdapter 资源的问题。那个领先的“p”看起来可能是问题所在。
private string DecryptWebResource(string urlEncodedData)
{
byte[] encryptedData = HttpServerUtility.UrlTokenDecode(urlEncodedData);
Type machineKeySection = typeof(MachineKeySection);
Type[] paramTypes = new Type[] { typeof(bool), typeof(byte[]), typeof(byte[]), typeof(int), typeof(int) };
System.Reflection.MethodInfo encryptOrDecryptData = machineKeySection.GetMethod("EncryptOrDecryptData", System.Reflection.BindingFlags.Static | System.Reflection.BindingFlags.NonPublic, null, paramTypes, null);
try
{
byte[] decryptedData = (byte[])encryptOrDecryptData.Invoke(null, new object[] { false, encryptedData, null, 0, encryptedData.Length });
string decrypted = Encoding.UTF8.GetString(decryptedData);
return decrypted;
}
catch (System.Reflection.TargetInvocationException)
{
}
return String.Empty;
}
【问题讨论】:
-
您是否看到用户代理在您的日志中发出请求?用户代理是机器人而不是常规浏览器。如果是浏览器,是否总是特定的浏览器?
-
您是否有机会使用实际的请求网址(您需要进行任何修改)?
-
我这里也有同样的问题。新服务器,相同的代码(复制/粘贴整个站点)在以前的服务器上工作。我确实遇到过一次这个问题,但我不记得我是如何解决的。
-
阅读这篇文章后:stackoverflow.com/questions/5676232/… 我注意到服务器的月份甚至都不正确(它显示的是六月,而我们是十一月)。我修复了它,并且......它有效!真的很奇怪。
-
不,前导“p”不是问题:我尝试解码工作 WebResource 请求的 d 参数,前导“p”也存在。
标签: c# asp.net .net-4.0 .net-2.0 webresource.axd