2011年5月2日 星期一

ASP.NET 4 的改變

每一次 ASP.NET 改版,都難免對前一個版本作一些修改。這樣的改變就會造成版本的不相容,對於版本升級來說不得不小心了。以下列出找到的改變。這一篇主要參考自原文的 http://www.asp.net/learn/whitepapers/aspnet4/breaking-changes

ViewState

Page 或 Control 的 ViewStateMode 目前多了 Inherit 的值,並且為預設值。在 ASP.NET 4 後,可以針對某個 control 關或開其 ViewState而不受 Parent 的影響。

controlRenderingCompatibilityVersion

ASP.NET 4 中的 control 所 Render 的 html 會與 ASP.NET 3.5 的結果不同。這會造成版本的相容性。因此,如果你的程式是由 V2.0 或 V3.5 使用Visual Studio 升級到V4.0 時,會在 web.config 中自動使用 controlRenderingCompatibilityVersion 為3.5。如下

<pages controlRenderingCompatibilityVersion="3.5" />

例如 asp:Menu. 在 V3.5 時所產生的 html 是一堆的table, tr, td。而 V4.0 時是 ul, li.

controlRenderingCompatibilityVersion="3.5" 時,Menu 的字型跑掉之外, html 是一堆的 table, tr, td。這是不被建議的。

image

 

controlRenderingCompatibilityVersion="4.0",改用 ul, li 來呈現。html簡化許多。

image

ClientID 的模式


ASP.NET 4 的預設模式為 Predictable, ASP.NET 3.5 的預設模式相當於 AutoID
<pages ClientIDMode="AutoID" />

HTMLEncode, UrlEncde 編碼單引號的方法不同


HtmlEncode ' => &#39;
UrlEncode ' => %27

預設的Hash

預設的Hash算法,ASP.NET 2.0 為 SHA1, ASP.NET 4.0 為 HMACSHA256

預設不使用 System.Web.Mobile.dll(即在 root web.config 不再找到)

ASP.NET Request Validation 的變更:
ASP.NET 2.0 只針對網頁 aspx 驗證
ASP.NET 4.0 針對所有 ASP.NET 資源的任何 Request, ,
  (包含 axd)
  httpHandler, httpModule, WebService

要使用舊的驗證方式
<httpRuntime requestValidationMode="2.0" />

ASP.NET 4 無法作為 2.0, 3.5 應用的子應用運行
solution.
在 parent web.config
<location path="" inheritInChildApplications="false">
</location>

 

ASP.NET 4 網站無法作為 SharePoint 站點的子站點運行

HttpRequest.FilePath 屬性中不再有  PathInfo 的值

沒有留言:

Share with Facebook