如何在IIS 7.0中托管MVC应用程序?
问题描述:
我创建了一个在本地主机上正常工作的MVC应用程序。我使用visual studio将项目发布到本地文件夹并将其上载到FTP位置。但在服务器上它不工作。如何在IIS 7.0中托管MVC应用程序?
我跟着一对夫妇的教程,但没有结果 http://haacked.com/archive/2008/11/03/bin-deploy-aspnetmvc.aspx http://www.hanselman.com/blog/IntegratingASPNETMVC3IntoExistingUpgradedASPNET4WebFormsApplications.aspx
有一些好的教程还是会有人帮助吗? 谢谢
答
有一对夫妇的事情,你可以检查:
- 检查其下的应用程序池的应用程序运行,并检查应用程序池使用的
integrated pipeline
代替classic
。 - 检查
web.config
文件是否包含<system.webServer>
元素。如果您使用集成管道,这是HttpModules
注册的地方。 - 检查
<modules>
元素的属性runAllManagedModulesForAllRequests
设置为"true"
。这会导致HttpModules
适用于所有请求,允许UrlRouteModule
执行此操作。您还必须删除并添加HttpModules。
基本上,web.config
的<system.webServer>
部分应包含这样的事情:
<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>
(注意,在1.0的MVC平台的这种情况下版本用于你不应该复制&粘贴此片段。 。这纯粹是它看起来应该是什么样子的迹象)
+1
+1 - 这帮助我解决了'modules'元素中缺少runAllManagedModulesForAllRequests =“true”'的问题。 – GiddyUpHorsey 2012-04-30 22:01:48
什么不起作用?怎么了?你有什么错误吗? – 2011-05-19 21:07:30
“这不起作用” - 请说明它的失败方式。你使用数据库吗?您可能需要在数据库文件上设置适当的权限。但是还有很多其他的原因可能会导致失败。 – fretje 2011-05-19 21:10:18
它插入了吗? – Gabe 2011-05-19 21:28:34