IIS上的ASP.NET MVC属于静态文件处理程序

时间:2011-08-04 12:49:58

标签: asp.net-mvc-2 iis-7

我的ASP.NET MVC网站存在问题。

这些是详细信息:

  1. ASP.NET MVC 2
  2. ASP.NET 4集成管道
  3. Windows Web Server 2008 R2上的IIS 7.5
  4. 每当我发出应用程序请求时,我都会收到“HTTP错误404.0 - 未找到”错误,详细错误信息显示它是报告错误的静态文件处理程序:

    • 模块: 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。

    所有想法?

5 个答案:

答案 0 :(得分:26)

我看到你修复了你的问题,但对任何人用谷歌搜索:

我有这个问题,在我的情况下,我只需要在IIS中注册ASP.NET 4。我正在删除并重新添加网络以修复其他问题而忘记这样做。对我有用的命令是:

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

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

答案 1 :(得分:13)

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

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

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

(更多细节/从这里复制:http://www.west-wind.com/weblog/posts/2011/Mar/27/ASPNET-Routing-not-working-on-IIS-70

答案 2 :(得分:0)

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

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

答案 3 :(得分:0)

在我的情况下,由于let options = { method: 'GET', url: 'https://api.getpostman.com/environments', header: { 'x-api-key': 'PMAK-your own key goes here' }, json: true }; let envs = []; pm.sendRequest(options, function(err, response) { if (!err) { let data = response.json(); _.forEach(data.environments, function(item) { envs.push(item); }); console.log(envs); } else { console.log(err); } });被禁用/无法正常工作而引发了类似的错误。我最终通过删除处理程序并通过StaticFile Handler重新添加了它来修复它。另外,如果出现web.config错误,请将403.3属性值从“写入”更改为“读取”

RequireAccess

答案 4 :(得分:-7)

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