ASP.Net MVC 3/4托管在IIS 7.5默认处理程序映射上

Llo*_*oyd 9 asp.net-mvc wcf web-config iis-7.5 asp.net-mvc-3

在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文件中设置它们的最佳方法是什么?

在此输入图像描述

在此输入图像描述

在此输入图像描述

Jes*_*aya 5

我已成功将MVC 4部署到本地IIS 7.5(Windows 7)。这个解决我的问题(如提到这里

(对于x64系统)

%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_regiis.exe -i
Run Code Online (Sandbox Code Playgroud)

(或者如果您使用的是32位系统)

%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_regiis.exe -i
Run Code Online (Sandbox Code Playgroud)

另外,我将DefaultAppPool更改为使用v4-Integrated(来自v2-Classic),将网站转换为应用程序,并使该应用程序使用DefaultAppPool。

这是我完整的Web.config。它包含处理程序。

<?xml version="1.0" encoding="utf-8"?>
Run Code Online (Sandbox Code Playgroud)

<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>
Run Code Online (Sandbox Code Playgroud)

<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>
Run Code Online (Sandbox Code Playgroud)


Tom*_*mmy 1

假设您的默认网站已配置为 IIS 中的应用程序,则此问题最可能的原因是应用程序池运行经典管​​道而不是集成管道。在我们部署到 Azure、本地 IIS 服务器和开发计算机的所有 MVC 应用程序中,我们不必接触处理程序映射,除非必须欺骗IIS 6 托管 MVC 站点。

检查应用程序池管道:

  1. 打开 IIS 管理器

  2. 右键单击默认网站,然后选择高级设置。这将打开一个窗口 在此输入图像描述

  3. 记下应用程序池的名称。现在,关闭此窗口并单击 IIS 管理器左侧菜单上的“应用程序池” 在此输入图像描述

  4. 如果托管管道模式未设置为集成(例如正在阅读经典),则右键单击应用程序池并选择基本设置。从这里,您可以更改管道类型。选择集成。

在此输入图像描述

5.应用程序池应立即重新启动,但您可以选择手动重新启动它或IIS以确保您的更改已生效。

注意- 如果您运行的是 IIS 6,这里有一个链接,介绍如何调整处理程序映射,以便 IIS 6 可以运行 MVC 站点。

附录- 如果您一直在处理处理程序映射,根据已更改的内容,您可能需要在干净的 IIS 安装上尝试此操作。当您的团队尝试使 MVC 部署正常工作时,尚不清楚哪些处理程序配置错误。


归档时间:

查看次数:

9317 次

最近记录:

11 年,9 月 前