如何在IIS 7.0中托管MVC应用程序?

Zac*_*ach 0 c# asp.net-mvc hosting

我创建了一个MVC应用程序,它在本地主机上运行良好.我使用visual studio将项目发布到本地文件夹并将其上传到FTP位置.但在服务器上它无法正常工作.

我按照了几个教程但没有结果 http://haacked.com/archive/2008/11/03/bin-deploy-aspnetmvc.aspx http://www.hanselman.com/blog/IntegratingASPNETMVC3IntoExistingUpgradedASPNET4WebFormsApplications.aspx

有一些很好的教程或者有人可以帮忙吗?谢谢

Eli*_*ing 7

您可以检查以下几项内容:

  1. 检查应用程序运行在哪个应用程序池下,并检查应用程序池是否使用integrated pipeline而不是classic.
  2. 检查web.config文件是否包含<system.webServer>元素.HttpModules如果您使用集成管道,则这是注册的位置.
  3. 检查<modules>元素是否已将属性runAllManagedModulesForAllRequests设置为"true".这使得它HttpModules可以用于所有请求,从而UrlRouteModule可以完成它的工作.您还必须删除并添加HttpModules.

基本上,该<system.webServer>部分web.config应该包含这样的内容:

<system.webServer>
    <modules runAllManagedModulesForAllRequests="true">
        <remove name="ScriptModule"/>
        <remove name="UrlRoutingModule"/>
        <add name="ScriptModule" preCondition="managedHandler" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
        <add name="UrlRoutingModule" type="System.Web.Routing.UrlRoutingModule, System.Web.Routing, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
    </modules>
    <handlers>
        <remove name="WebServiceHandlerFactory-Integrated"/>
        <remove name="ScriptHandlerFactory"/>
        <remove name="ScriptHandlerFactoryAppServices"/>
        <remove name="ScriptResource"/>
        <remove name="MvcHttpHandler"/>
        <remove name="UrlRoutingHandler"/>
        <add name="ScriptHandlerFactory" verb="*" path="*.asmx" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
        <add name="ScriptHandlerFactoryAppServices" verb="*" path="*_AppService.axd" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
        <add name="ScriptResource" preCondition="integratedMode" verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
        <add name="MvcHttpHandler" preCondition="integratedMode" verb="*" path="*.mvc" type="System.Web.Mvc.MvcHttpHandler, System.Web.Mvc, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
        <add name="UrlRoutingHandler" preCondition="integratedMode" verb="*" path="UrlRouting.axd" type="System.Web.HttpForbiddenHandler, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
    </handlers>
</system.webServer>
Run Code Online (Sandbox Code Playgroud)

(请注意,在这种情况下,使用MVC平台的1.0版本.您不应该复制并粘贴此片段.它纯粹表示它应该是什么样子)