3

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

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

全球.asax.cs

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

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

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

全尺寸图片在这里 在此处输入图像描述

4

2 回答 2

3

您必须检查应用程序池身份设置。确保您的 Web 应用程序的 appPool 身份已设置 ApplicationPoolIdentity 并且应集成托管管道模式。

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

<system.webServer><modules runAllManagedModulesForAllRequests="true"> </modules></system.webServer>
于 2012-05-15T07:12:12.270 回答
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>      

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

于 2012-05-15T15:43:46.007 回答