簡體   English   中英

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

[英]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站點。

要檢查應用程序池管道:

  1. 打開IIS管理器

  2. 右鍵單擊“默認網站”,然后選擇“高級設置”。 這將打開一個窗口 在此輸入圖像描述

  3. 記下應用程序池的名稱。 現在,關閉此窗口並單擊IIS管理器左側菜單上的“應用程序池” 在此輸入圖像描述

  4. 如果Managed Pipeline Mode未設置為Integrated(例如,讀取經典),則右鍵單擊Application Pool並選擇基本設置。 從這里,您可以更改管道類型。 選擇集成。

在此輸入圖像描述

5.應用程序池應立即重新啟動,但您可以選擇手動重新啟動它或IIS以確保您的更改已生效。

- 如果您運行的是IIS 6,則此處的鏈接描述如何調整處理程序映射,以便IIS 6可以運行MVC站點。

附錄 - 如果您一直在使用處理程序映射,取決於已更改的內容,您可能希望在干凈的IIS安裝上嘗試此操作。 當您的團隊嘗試使MVC部署工作時,不清楚哪些處理程序配置錯誤。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM