web.config從.net
framework3.5向4.0遷移注意事項
2012-04-25 11:53:51| 分類: 2012.net之路
| 標簽:.net
|字號大中小 訂閱
原文:http://blog.sina.com.cn/s/blog_56a68d5501010p2b.html
參考:http://www.cnblogs.com/pandora/archive/2010/03/12/asp_net_4_introduction.html
請仔細閱讀此文↑:
簡潔的Web.Config文件
在VS2008SP1中,默認的web.config文件代碼有139行,而在ASP.NET4.0中,web.config
文件只有6行:
原理很簡單,ASP.NET團隊對web.config文件進行了重構,將通用的設置寫進默認的機器級別的web.config中。只剩下兩個需要頻繁變化的設置項。
debug的值在Web Application 項目中會被默認設置為true,在Web
Site 項目中會被默認設置為false
targetFramework的值可以設置為:4.0,3.5,3.0和2.0。這個選項會被IIS識別並自動賦予ASP.NET程序池相應的Framework版本。
Intellisense在舊版的web.config中會不起作用。可以通過刪除原web.config中configuration的namespace(xmlns)屬性就可以了。
今天花費了多半天的時間使Spacebuilder同時兼容.net
framework3.5和4.0。由於以前了解過(參見:asp.net
4.0來了),在asp.net4.0中對web.config作了很多簡化,因此把注意力聚集到了dll的版本號及簽名和HttpHandler和HttpModule上,分別作了以下處理:
1、去除所有與.net
framework3.5相關的dll版本號及簽名,例如:“System.Web.Routing, Version=3.5.0.0,
Culture=neutral, PublicKeyToken=31BF3856AD364E35” 修改 為“System.Web.Routing”;
2、去除
configuration/configSections/sectionGroup[name="system.web.extensions"]
的配置節點;
3、僅保留:
<compilation debug="true">
<assemblies>
assembly="System.Web.Abstractions"/>
assembly="System.Web.Routing"/>
assembly="System.Web.Mvc"/>
</assemblies>
</compilation>
4、另外由於ASP.NET
4.0請求驗證模式發生變化,因此僅在<httpRuntime/>設置 validateRequest="false"已經不起作用,需要
requestValidationMode="2.0",即<httpRuntime requestValidationMode="2.0"
/>
5、去除httpHandlers、httpModules以及system.webServer/modules、system.webServer/handlers中所有與framework3.5自帶的配置;
至此,web.config修改完畢。
除了web.config以外還發現了一個.net
framework4.0與以前版本的兼容性問題:
在以前版本中System.IO.File.Exists 可以判斷“d:\root\a.txt\”但是在
Framework4.0中必須使用規范的“d:\root\a.txt”,否則一直返回false。該問題花費了大量時間。
留個記號,以后備查。