WebResource.axd错误 - “这是一个无效的Web资源请求。”

时间:2011-02-14 03:50:07

标签: c# asp.net .net-4.0 .net-2.0 webresource.axd

我有一个大型.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;
}   

1 个答案:

答案 0 :(得分:2)

  
    

WebResource.axd生成请求的机制是否在框架版本之间发生了变化?

  

显然应用安全更新(当然还有更改框架主要版本)可能会导致涉及WebResource.axd的客户端 - 服务器交互,从而导致此错误。我们在应用补丁后看到了这个错误,原因似乎是客户端缓存http://forums.asp.net/t/1609380.aspx - 错误在30天左右后就消失了。