Asp.net 全局.asax未为IIS7中的.aspx页面触发

Asp.net 全局.asax未为IIS7中的.aspx页面触发,asp.net,iis-7,isapi-rewrite,global-asax,Asp.net,Iis 7,Isapi Rewrite,Global Asax,我们运行一个链接重定向服务,它可以处理以各种格式抛出的链接。例如,这些格式之一是将目标URL附加到链接的末尾 在过去的两年里,它一直在Windows Server 2003/IIS6设备上工作,但现在我们正试图转移到Windows Server 2008/IIS7设备上,它不再工作了 我读过关于URL中冒号的问题,但它不会影响不以“.aspx”结尾的页面。比如说, 好的 也可以正常工作(注意缺少第二个冒号)。尽管是错误的URL,但它确实由我们的URL转发系统处理,该系统使用自定义404页面

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

在过去的两年里,它一直在Windows Server 2003/IIS6设备上工作,但现在我们正试图转移到Windows Server 2008/IIS7设备上,它不再工作了

我读过关于URL中冒号的问题,但它不会影响不以“.aspx”结尾的页面。比如说,

好的

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

在我们的新服务器上,应用程序_错误永远不会在Global.asax中抛出。相反,我得到一个System.NotSupportedException-“不支持给定路径的格式”。这个System.NotSupportedException正是我们在Global.asax页面中处理的情况,因此它肯定不会被触发

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

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

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

错误请求错误请求

更新:我已将静态文件处理程序映射更改为此页面中找到的表单 然而,正如作者正确地指出的,这是一种黑客行为,而不是IIS7下的正确做事方式。它还仅修复了经典模式下的静态文件问题。“。在经典模式下,aspx的页面仍会抛出错误

在这一点上,任何想法或意见都将不胜感激

iis7解决方案

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

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

在我的例子中,我在制作中发布了我的站点,但我错过了复制到服务器App_global.asax.compiled文件。因此,没有在Global.asax中触发事件


希望其他人能帮上忙,我找了8个小时。

FYI:我从来没有找到解决办法。我们必须恢复到使用经典的ASP页面来处理所有传入的流量,并删除任何以“.aspx”结尾的带后缀的URL,然后将它们传递到ASP.NET堆栈。我对这个解决方案很不满意,但这是我们唯一能找到的解决方案。如果有人对如何让Global.asax在IIS7中为这些请求开火有任何想法,我很乐意听到他们的声音。作为更新,早在09年,我就发布了我最初的黑客攻击的后续内容,详细说明了如何以正确的方式工作::)魔法属性是..谢谢Helephant!这正是我想要的。是的。我尝试了预编译应用程序并部署它,然后我在没有预编译的情况下尝试了它,它没有删除旧文件。所以他们把事情搞砸了!