我正在本地 Windows Server 2008/IIS7 机器上开发 ASP.NET MVC 网站,现在我正在尝试将其部署到我的网络主机提供商ASPnix。我正在使用他们的 Shared Web Hosting 服务,并被放置在他们声称支持 ASP.NET MVC 的 IIS7 服务器上。
但是,当我将应用程序部署到他们的服务器时,我收到“内部服务器错误”。
这是错误摘要:
HTTP 错误 500.19 - 内部服务器错误
无法访问请求的页面,因为该页面的相关配置数据无效。
以下是详细错误信息的相关部分:
模块:IIS Web 核心
通知:开始请求
处理人:尚未确定
错误代码:0x80070021
配置错误:此配置部分不能在此路径中使用。当该部分锁定在父级别时会发生这种情况。锁定是默认情况下 (overrideModeDefault="Deny") 或由具有 overrideMode="Deny" 或旧 allowOverride="false" 的位置标记显式设置的。
配置源如下所示:
144: </modules>
145: <handlers>
146: <remove name="WebServiceHandlerFactory-Integrated"/>
该错误来自这样一个事实,即我的web.config 文件中有一个system.webServer部分,该部分有一个handlers子部分。system.webServer部分是我第一次在 Visual Studio 中创建 ASP.NET MVC 网站时默认设置的确切配置部分。它上面有以下 XML 注释:
<!--
The system.webServer section is required for running ASP.NET AJAX under Internet
Information Services 7.0. It is not necessary for previous version of IIS.
-->
我将处理程序子部分取出,500 错误消失了。当然,该部分是 ASP.NET MVC 应用程序在 IIS7 中正常工作所必需的,因此仅使用它只会产生其他错误(在这种情况下为 404 错误,因为路由不起作用)。
ASPnix 的支持工程师声称 ASP.NET MVC 已在其服务器上的 IIS7 中正确安装和配置。我并不是说我不相信他们,因为这是我构建和部署的第一个 ASP.NET MVC 站点。但是,我想不出我能做些什么来完成这项工作,因为它似乎是一个我无法访问的级别的配置问题。
这个问题听起来像是人们试图将 ASP.NET MVC 部署到托管服务提供商的常见问题。ASPnix 或其他网络托管公司是否遇到过这种情况并希望找到解决方案?
ps
一件奇怪的事。在网上研究这个问题时,我发现很多人说他们必须将 IIS7 的 applicationHost.config 文件的 overrideModeDefault 属性设置为从“拒绝”到“允许”。但是,我的本地开发服务器将此设置为“拒绝”并且一切正常。即便如此,我仍然无法访问 Web 主机服务器上的 applicationHost.config 文件。