2012-02-17 21 views
2

我在IIS6下遇到以下問題。我完全理解這個問題,我只是在尋找最好的解決方案。我可以通過兒童網站的web.config文件設置「默認網站」的屬性嗎? (IIS6)

我有以下幾點:

  • 默認Web站點
    • apiservices
    • ourwebsite

網站 'apiservices' 下的.NET Framework 2.0版運行仍然。 網站'ourwebsite'使用MVC3在.NET Framework v4.0下運行。

由於我們的混合.NET框架版本,.NET 4.0中Extensionless URL處理引入的一個甜美的新功能正在引發一些問題。

如果我去:

  • 'ourwebsite' - >右鍵 - >屬性 - >虛擬目錄選項卡 - >配置。我發現存在一個通配符應用程序映射到.NET Framework v4.0 aspnet_isapi.dll。 這是正確的,但由於我們的設置,這還不夠。
  • 'apiservices' - >右鍵單擊 - >屬性 - >虛擬目錄選項卡 - >配置。我發現存在一個映射到.NET Framework的通配符應用程序v2.0 aspnet_isapi.dll 這對我們的設置是正確的,並且不能設置爲4.0,否則會中斷。

現在,這裏是由於微軟的變化引起的誤差:因爲ASP.NET應用程序V4.0並沒有在根級別定義的通配符映射,默認Web站點,我們的應用程序內部PageMethods得到不正確的路由和404。

瘋狂的部分?如果我去:

  • '默認網站' - >右鍵單擊 - >屬性 - >'主目錄'選項卡 - >配置。然後,從這裏,將.NET Framework v4.0添加到我的通配符應用程序映射中。
  • 我點擊確定。系統會提示我指出哪些子網站希望應用這些更改,因爲它們都定義了自己的通配符應用程序映射。 我在這裏表示我只希望這個通配符映射適用於「ourwebsite」而不是「apiservices」

運用這一變化可以解決我們的問題。

現在,我想知道,我該如何去設置它?這是web.config文件的工作 - 它可以控制像這樣的上層設置嗎?或者它是我們安裝程序的自定義操作的工作?

編輯:它看起來像我需要使用WIX來做到這一點。目前,我有以下代碼在子級別設置通配符映射。我正在探索在根級設置它的方式,而不會覆蓋「apiservices」通配符映射:

<iis:WebVirtualDir Id="CSWebVirtualDir" Alias="[TARGETCSWEBVDIR]" Directory="CABLESOLVEWEBDIR" WebSite="DefaultWebSite"> 
    <iis:WebApplication Id="CSWebApplication" Name="[TARGETCSWEBVDIR]" AllowSessions="yes" ParentPaths="yes" ScriptTimeout="900" SessionTimeout="60" WebAppPool="CSWebAppPool" ClientDebugging="no" ServerDebugging="no" Isolation="medium"> 
     <iis:WebApplicationExtension Executable="[FRAMEWORKROOT]v4.0.30319\aspnet_isapi.dll" CheckPath="no" Script="yes" Verbs="GET,HEAD,POST" /> 
    </iis:WebApplication> 
    <iis:MimeMap Id="MIMEXAP" Type="application/x-silverlight-app" Extension=".xap" /> 
    <iis:MimeMap Id="MIMEXAML" Type="application/xaml+xml" Extension=".xaml" /> 
</iis:WebVirtualDir> 

<iis:WebVirtualDir Id="CSWebAPIVirtualDir" Alias="[TARGETCSWEBAPIVDIR]" Directory="CABLESOLVEWEBAPIDIR" DirProperties="CSWebAPIVirtualDirProperties" WebSite="DefaultWebSite"> 
    <iis:WebApplication Id="CSWebAPIApplication" Name="[TARGETCSWEBAPIVDIR]" ParentPaths="yes" AllowSessions="yes" ScriptTimeout="900" SessionTimeout="60" WebAppPool="CSWebAPIAppPool" ClientDebugging="no" ServerDebugging="no" Isolation="medium"> 
     <iis:WebApplicationExtension Executable="[FRAMEWORKROOT]v2.0.50727\aspnet_isapi.dll" CheckPath="no" Script="yes" Verbs="GET,HEAD,POST" /> 
    </iis:WebApplication> 
</iis:WebVirtualDir> 
+0

這兩個網站是否在IIS中的同一個應用程序池下運行? – Rondel 2012-02-17 19:35:15

+0

不,他們有獨立的應用程序池。 – 2012-02-17 19:35:59

回答

0

我們的解決方案是將這些步驟添加到我們的安裝指南。我無法確定簡單修改默認網站的方法。

相關問題