我有一个.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
答案 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>
由于您正在从全局应用程序类执行重写代码,我会先尝试更改应用程序池,看看会发生什么。希望这有助于祝你好运!