Global.asax not firing for .aspx pages in IIS7

老子叫甜甜 提交于 2019-12-29 05:34:12

问题


We run a link redirection service which can handle links thrown at it in various formats. One of these formats is to append the destination URL to the end of the link, for example

http://url.fwd/abcd/http://www.mydomain.com/page.aspx

This was working on a Windows Server 2003 / IIS6 box for the last two years, but now we're trying to move to a Windows Server 2008 / IIS7 setup and its not working anymore.

I've read about the problem with colons in the URL but it doesn't affect pages not ending in '.aspx'. For instance,

http://url.fwd/abcd/http://www.mydomain.com/page.php

would redirect fine.

http://url.fwd/abcd/http//www.mydomain.com/page.aspx

also works fine (note the lack of a second colon). Despite being the wrong URL, it does get handled by our URL forwarding system, which uses a custom 404 page. On the old system, we had a similar problem, so a method was written in Global.asax > Application_Error specifically to handle the '.aspx' case, and it worked fine.

On our new server, the Application_Error never gets thrown in Global.asax. Instead, I get a System.NotSupportedException - "The given path's format is not supported". This System.NotSupportedException is the exact case we handle in the Global.asax page, so it's definitely not being fired.

I've changed the registry keys indicated in several forum posts, HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ASP.NET VerificationCompatibility=1 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\HTTP|Parameters AllowRestrictedChars=1

I've tried changing the Handler Mappings settings for .aspx.

I've tried setting the App pool to use classic mode instead of integrated, but this causes a completely different error where static content such as images and CSS do not display at all. I've checked that static content is enabled in the windows features, and it is. Under classic mode, the '.aspx' request throws two Bad Request errors with absolutely no information whatsoever. The code of the error page I get is literally

Bad Request<html><body>Bad Request</body></html>

UPDATE: I've changed the static file Handler Mapping to the form found in this page http://improve.dk/blog/2006/12/11/making-url-rewriting-on-iis7-work-like-iis6 However, as the author rightly points out, this is a hack and not the correct way of doing things under IIS7. It also only fixes the static file problem in classic mode. '.aspx' pages still throw an error under classic mode.

Any thoughts or input would be greatly appreciated at this point.


回答1:


IIS 7 Solution

The easy solution in IIS 7 is to add a setting in your web.config file to tell IIS to process all requests through your Global.asax events. Just add or change this section in your web.config to enable requests:

<system.webServer>
  <modules runAllManagedModulesForAllRequests="true" />
</system.webServer>



回答2:


In my case, I was publish my site in production and I miss copy to server App_global.asax.compiled file. For this reason was not fire the Events inside Global.asax.

Hope anyelse help this tips, I lost 8 hours seeking.



来源:https://stackoverflow.com/questions/2942797/global-asax-not-firing-for-aspx-pages-in-iis7

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!