ASP.NET Context RewritePath 404错误

时间:2012-05-14 18:42:21

标签: asp.net iis-7 url-rewriting url-routing http-status-code-404

我有一个.net 4.0 Web应用程序就像我本地计算机和旧Web服务器上的魅力一样。两台计算机都使用经典和.net 4.0应用程序池而没有任何问题。

但是当我迁移到新的Web服务器时,它会提供404错误而不是重写URL。 我创建了一个尽可能简单的新应用程序。它将所有请求路径重写为default.aspx,如下所示:

的Global.asax.cs

protected void Application_BeginRequest(object sender, EventArgs e)
{
    Context.RewritePath("default.aspx", false);
}

如果我直接请求文件本身,我可以访问default.aspx但是当我向地址发出请求时,除了'default.aspx'我从静态文件处理程序中得到404错误。

你有什么想法,我该如何解决?

全尺寸图片here enter image description here

2 个答案:

答案 0 :(得分:3)

您必须检查应用程序池标识设置。确保您的Web应用程序的appPool标识已设置ApplicationPoolIdentity和Managed Pipeline Mode应该是Integrated。

然后检查您的Web配置system.webserver模块并在您的应用程序Web配置上启用此配置。

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

答案 1 :(得分:1)

我遇到了类似的问题。我在APP_Code文件夹中有一个URL重写类,它在Visual Studio 2008开发服务器和IIS 6.5上运行,但在IIS 7.5中。 “OnBeginRequest”似乎没有触发,我收到了同样的404错误。经过相当多的反复试验后,我找到了解决我问题的组合:

在IIS 7.5的网站基本设置下,将应用程序池设置更改为“Classic .NET AppPool”。

在Web.config中,我添加了以下内容以引用URL重写类:

<httpModules>
     <add name="*URLRewriteClassName*" type="*Namespace.URLRewriteClassName*"/>
  </httpModules>      

由于您正在从全局应用程序类执行重写代码,我会先尝试更改应用程序池,看看会发生什么。希望这有助于祝你好运!