小喵遇到一個狀況,根網站的.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">
之後再進行測試,剛剛的問題瞬間消失
後記
由於這樣的設定方式很特別,小喵特別筆記下來,提供未來參考,也提供網友們參考。
以下是簽名:
- 歡迎轉貼本站的文章,不過請在貼文主旨上加上【轉貼】,並在文章中附上本篇的超連結與站名【topcat姍舞之間的極度凝聚】,感恩大家的配合。
- 小喵大部分的文章會以小喵熟悉的語言VB.NET撰寫,如果您需要C#的Code,也許您可以試著用線上的工具進行轉換,這裡提供幾個參考
Microsoft MVP Visual Studio and Development Technologies (2005~2019/6) | topcat Blog:http://www.dotblogs.com.tw/topcat |