我正在尝试将ASP.NET MVC 4 Web应用程序部署到生产服务器(安装了SP1的Windows Server 2008 R2 [x64],运行IIS 7.5),该服务器已经有其他几个有效的ASP.NET应用程序。我所能得到的只是403索引,除了静态内容之外的其他所有内容都是404。该应用程序在我的本地计算机的IIS 7.5实例上运行没有问题(我在Windows 7上运行,最新的,64位。)
<modules runAllManagedModulesForAllRequests="true"/>
aspnet_regiis -iru
UrlRoutingModule-4.0
模块
今天早上我停止了网站,停止了应用程序池,重新部署而没有触及任何东西,而且......它有效!但是......如果我在配置中触摸了一个小东西,无论是在远程桌面上使用FileZilla还是IIS控制台,该网站都会爆炸并再次开始这样做。只有通过停止站点并将所有文件替换在一起,我才能恢复它 - 尝试停止并更换web.config,但这不起作用。更改可以简单到禁用和重新启用我的“重定向到https”重写规则。
似乎问题是我的路由在应用程序池被回收时停止工作,无论是通过文件更改还是显式重新启动。我使用Application_Start和RegisterRoutes以与项目模板相同的方式注册两条路线。如果它在标准项目模板中,我不明白为什么这不起作用......
答案 0 :(得分:0)
问题在于我的发布设置。我在Visual Studio 2012中使用以下预编译选项:
通过选择“不合并”或“将所有输出合并到单个组件”,问题得到缓解。
<强>更新强>
即使使用其他设置,问题也会恢复,但它并没有立即发生。我不得不完全禁用预编译。
答案 1 :(得分:0)
我想在这里给我2美分。我在Windows Server 2012上有这种确切的行为。
我的问题与配置无关,但事实global.asax
在Application_Start
中有异常,我的代码注册路由表后再也没有发生过。因此,如果您有此行为,请确保捕获异常并处理它们,以便执行所有代码。