[Tips][筆記]解決.NET Framework 3.5網站中,專案使用 .NET Framework 4.5 的問題 [錯誤代碼 0x800700b7 ]

  • 596
  • 0
  • 2018-01-04

小喵遇到一個狀況,根網站的.NET Framework版本為 3.5 ,新專案用的.NET Framework 4.5 掛在其下,遇到一些奇怪的錯誤

錯誤代碼 0x800700b7 配置錯誤定義了重複的 "system.web.extensions/scripting/scriptResourceHandler"

我們繼續看下去~

緣起

小喵遇到一個狀況,根網站的.NET Framework版本為 3.5 ,新專案用的.NET Framework 4.5 掛在其下,遇到一些奇怪的錯誤

錯誤代碼 0x800700b7 配置錯誤定義了重複的 "system.web.extensions/scripting/scriptResourceHandler"

但實際上,是因為繼承了上層的web.config設定而導致,由於有某些原因,子專案一定要用較新的.NET Framework,而根站台的Framework版本也不能變的情況下
為了解決這問題,必須用一點特別的設定。我們繼續看下去~

在根web.config設定<location path="." inheritInChildApplications="false">

首先,小喵參考黑大的文章(這一篇),把站台的根Web.config,做了如下的設定:

<location path="." inheritInChildApplications="false">
    <system.web>

    </system.web>
</location>

不過,結果還是會沒辦法,依舊還是會有錯誤

解決方式

AppPool分開

首先,根站台與子專案,分別使用不同的應用程式集區(AppPool)這部分是一定要的,根站台使用『.NET Framework 2.0 傳統式』的方式,而子專案則是使用『.NET Framework 4.0 整合式』的方式,並且記住子專案的AppPool的『名稱』

AppPool設定

接下來的設定是關鍵,要設定AppPool的『enableConfigurationOverride="false"』,讓繼承的關係取消掉。
這部分在UI的設定中,小喵找不到,因此要用以下的步驟來進行

  • 從檔案總管,開啟這個檔案『C:\Windows\System32\inetsrv\config\applicationHost.config
  • 尋找您剛剛設定的AppPool(所以剛剛要把4.0的那個AppPool名稱記住),然後類似以下的設定
<add name="我的AppPool名稱" autoStart="true" managedRuntimeVersion="v4.0" enableConfigurationOverride="false">

之後再進行測試,剛剛的問題瞬間消失

後記

由於這樣的設定方式很特別,小喵特別筆記下來,提供未來參考,也提供網友們參考。

 

 

 

 

 

 

 


以下是簽名:


Microsoft MVP
Visual Studio and Development Technologies
(2005~2019/6)