首页 文章

ASP.NET IIS 上的 MVC 落入静态文件处理程序

提问于
浏览
18

我有一个 ASP.NET MVC 网站的问题。

这些是细节:

  • ASP.NET MVC 2

  • ASP.NET 4 综合管道

  • Windows Web Server 2008 R2 上的 IIS 7.5

每当我发出应用程序请求时,我都会收到“HTTP Error 404.0 - Not Found”-error 并且详细的错误信息显示它是报告错误的静态文件处理程序:

  • 模块:IIS Web Core

  • 通知:MapRequestHandler

  • 处理程序:StaticFile

  • 错误代码:0x80070002

意味着请求永远不会进入 MVC 堆栈。

我应该注意到,IIS 已经在同一个应用程序池上提供 ASP.NET MVC 3,在 ASP.ENT 2 应用程序池上提供 MVC 2。所以这是 ASP.NET 4 应用程序池上的组合 ASP.NET 2 令我头疼。

基本上我想将应用程序从 ASP.NET 2.0 应用程序池上的 ASP.NET MVC 2 升级到 ASP.NET 4.0 应用程序池上的 ASP.NET MVC 2。

那么任何想法?

4 回答

  • 26

    我看到你解决了你的问题,但对任何人谷歌搜索:

    我有这个问题,在我的情况下,我只需要在 IIS 中注册 ASP.NET 4。我正在删除和 re-adding 网络来修复其他问题而忘记这样做了。对我有用的命令是:

    C:\Windows\Microsoft.NET\Framework64\v4.0.30319>aspnet_regiis -i

    您自己的.net 版本可能会有所不同,特别是如果您将来,所以上述路径可能不完全正确。

  • 13

    我在安装 Visual Studio 等安装 IIS 后遇到了同样的问题。

    我能够通过更改 Web.config 文件,将runAllManagedModulesForAllRequests="true"添加到<modules>标记来解决问题:

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

    (更多 details/copied 来自:http://www.west-wind.com/weblog/posts/2011/Mar/27/ASPNET-Routing-not-working-on-IIS-70)

  • 0

    克里斯的回答让我检查应用程序池是否实际配置为.net 4.果然,此服务器默认在经典模式下创建 32-bit .net 2 池。

    确保您的应用程序正在使用 4.0,并且您可能希望所有新开发的集成管道。 32/64 主要取决于您的依赖项。默认情况下,将“允许 32 位分配”设置为 false。

  • -7

    所以我发现了错误。根目录中有一个剩余的默认文档,对于使用集成管道的应用程序来说,这不是必需的。此外,Global.ascx 和路线注册的一些变化是必要的,但在此之后它起作用了。

相关问题