[英]ASP.Net MVC 3/4 Hosted on IIS 7.5 Default Handler Mappings
在Windows 7(PRO)上的IIS 7.5 .Net Framework 4.0上托管的ASP.Net,ASP.Net MVC和WCF服务的正确默认处理程序映射是什么?
在安装了ASP.Net MVC 3/4的8位开发人员的团队中,只有1名开发人员可以在IIS 7.5中的默认网站下使用基本的ASP.Net MVC 3 Internet应用程序,而无需更改处理程序映射,没有一个团队可以获得具有相同站点的第二个网站,以使用位于根网站的子目录中的站点目录。 的Inetpub / wwwroot文件/网站
下面是IIS 7.5中设置的三个处理程序映射,它们都是不同的,并且未被开发人员更改。
将所需设置定义为默认值并确保所有工作站都应用相同配置而不在网站Web.Config文件中设置它们的最佳方法是什么?
我成功地将MVC 4部署到我的本地IIS 7.5(Windows 7)。 这解决了我的问题(如这里提到的)
(适用于x64系统)
%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_regiis.exe -i
(或者如果你在32位系统中)
%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_regiis.exe -i
此外,我将DefaultAppPool更改为使用v4-Integrated(来自v2-Classic),将网站转换为应用程序,并让应用程序使用DefaultAppPool。
这是我完整的Web.config。 它包含Handler。
<?xml version="1.0" encoding="utf-8"?>
<compilation targetFramework="4.0" />
<pages>
<namespaces>
<add namespace="System.Web.Helpers" />
<add namespace="System.Web.Mvc" />
<add namespace="System.Web.Mvc.Ajax" />
<add namespace="System.Web.Mvc.Html" />
<add namespace="System.Web.Routing" />
<add namespace="System.Web.WebPages" />
</namespaces>
</pages>
<modules runAllManagedModulesForAllRequests="true" />
<handlers>
<remove name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" />
<remove name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" />
<remove name="ExtensionlessUrlHandler-Integrated-4.0" />
<add name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
<add name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
<add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
</handlers>
假设您的默认网站已在IIS中配置为应用程序,此问题的最可能原因是让应用程序池运行Classic管道而不是Integrated管道。 在我们部署到Azure,本地IIS服务器和开发机器的所有MVC应用程序中,我们不必触及处理程序映射,除非必须欺骗 IIS 6来托管MVC站点。
要检查应用程序池管道:
打开IIS管理器
右键单击“默认网站”,然后选择“高级设置”。 这将打开一个窗口
记下应用程序池的名称。 现在,关闭此窗口并单击IIS管理器左侧菜单上的“应用程序池”
如果Managed Pipeline Mode未设置为Integrated(例如,读取经典),则右键单击Application Pool并选择基本设置。 从这里,您可以更改管道类型。 选择集成。
5.应用程序池应立即重新启动,但您可以选择手动重新启动它或IIS以确保您的更改已生效。
注 - 如果您运行的是IIS 6,则此处的链接描述如何调整处理程序映射,以便IIS 6可以运行MVC站点。
附录 - 如果您一直在使用处理程序映射,取决于已更改的内容,您可能希望在干净的IIS安装上尝试此操作。 当您的团队尝试使MVC部署工作时,不清楚哪些处理程序配置错误。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.