WebResource.axd throwing exceptions in web farm

2019-02-20 15:20发布

问题:

We have an array of about 12 servers serving a website. Over the past few hours, one single server has started throwing exceptions for WebResource.axd and ScriptResource.axd requests.

Exception

System.Web.HttpException - This is an invalid script resource request.

Stack Trace

at System.Web.Handlers.ScriptResourceHandler.ProcessRequest(HttpContext context)
at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)

Broken server URL

/WebResource.axd?d=S6kjkBsrIKni9uO5HCkv0c8eYObzibWXn9R6A7Yr_Fy7CW4dRFZm1HfcnUTEZ8xBYZDM-5zeTVk1tTgC1hp7d5YYw3o1&t=634308186300177825

All other servers URL

/WebResource.axd?d=yj6PW1hbOvqhMkOh2gYGlw2&t=634207187366247462

I have checked the web.config, machine.config for every server and they're all identical. The only difference been able to find so far is that prior to the problem commencing, the servers were patched, after which, the problematic server looks to be using different version of the System.Web.dll to the others?

Any ideas?

回答1:

Found the root cause of the problem. The problem server had a security patch applied which updated System.Web.dll. For some reason our hosting provider didn't update any of the other dll's and in turn this server was generating different encryption keys to the others.

To work out which dll was affected, I used the following to decrypt the webresource.axd query string parameters:

http://blogs.telerik.com/aspnet-ajax/posts/07-03-27/debugging-asp-net-2-0-web-resources-decrypting-the-url-and-getting-the-resource-name.aspx



回答2:

The "?d=yj6PW1hbOvqhMkOh2gYGlw2&t=634207187366247462" is a link somehow (hash or something?) to a resource in the system.web.dll, so understandably with different dll's on that server the link isn't valid.