Global.asax没有为IIS7中的.aspx页面触发

时间:2010-05-31 10:05:26

标签: asp.net iis-7 isapi-rewrite global-asax

我们运行链接重定向服务,该服务可以处理以各种格式抛出的链接。其中一种格式是将目标URL附加到链接的末尾,例如

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

这在过去两年中在Windows Server 2003 / IIS6上运行,但现在我们正在尝试迁移到Windows Server 2008 / IIS7设置,它不再起作用了。

我已经读过URL中冒号的问题,但它不会影响以'.aspx'结尾的页面。例如,

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

会重定向。

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

也可以正常工作(注意缺少第二个冒号)。尽管URL错误,但它确实由我们的URL转发系统处理,该系统使用自定义404页面。在旧系统上,我们遇到了类似的问题,因此在Global.asax>中编写了一个方法。 Application_Error专门用于处理'.aspx'的情况,它运行正常。

在我们的新服务器上,Application_Error永远不会被Global.asax抛出。相反,我得到一个System.NotSupportedException - “不支持给定路径的格式”。这个System.NotSupportedException是我们在Global.asax页面中处理的确切情况,因此它绝对不会被触发。

我已经更改了几个论坛帖子中指示的注册表项, HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ ASP.NET VerificationCompatibility = 1 HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ services \ HTTP |参数AllowRestrictedChars = 1

我尝试更改.aspx的处理程序映射设置。

我已经尝试将应用程序池设置为使用经典模式而不是集成,但这会导致完全不同的错误,其中静态内容(如图像和CSS)根本不显示。我已经检查过在Windows功能中启用了静态内容,它确实如此。 在经典模式下,'。aspx'请求会抛出两个错误请求错误,绝对没有任何信息。我得到的错误页面的代码字面上是

错误请求< html>< body>错误请求< / body>< / html>

更新:我已将静态文件处理程序映射更改为此页面中的表单 http://improve.dk/blog/2006/12/11/making-url-rewriting-on-iis7-work-like-iis6 但是,正如作者正确指出的那样,这是一种黑客行为,而不是IIS7下正确的做事方式。它还只修复了经典模式下的静态文件问题。 '.aspx'页面仍然在经典模式下抛出错误。

此时我们将非常感谢任何想法或意见。

2 个答案:

答案 0 :(得分:7)

IIS 7解决方案

IIS 7中的简单解决方案是在web.config文件中添加一个设置,告诉IIS通过Global.asax事件处理所有请求。只需在web.config中添加或更改此部分即可启用请求:

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

答案 1 :(得分:0)

在我的情况下,我在生产中发布我的网站,我想念复制到服务器 App_global.asax.compiled 文件。出于这个原因,没有触发Global.asax中的事件。

希望有任何帮助这个提示,我失去了8个小时的寻求。