英文原文:
ASP.NET 4 Breaking Changes
http://www.asp.net/learn/whitepapers/aspnet4/breaking-changes
控件生成的代码的变化:
Image 和 ImageButton控件 控件不再添加 border="0" 属性。
BaseValidator 类和验证控件不再默认红色文本。
HtmlForm 控件不呈现 name 属性。
Table 控件不再呈现 border="0" 属性。
不支持用户输入的控件(例如Label),如果Enabled属性设置为false ,将不再生成disabled="disabled"属性。
ClientIDMode变化
ClientIDMode 在ASP.NET 4允许您设定如何生成前台编号 。ASP.NET早期版本,默认的行为等同于 在asp.net 4 中将ClientIDMode设置为AutoID。但是,asp.net 4中默认设置是Predictable。
如果您使用Visual Studio 2010升级您从ASP.NET 2.0或ASP.NET 3.5应用程序,该工具会自动添加一个设置为 Web.config中 文件中保留了早期版本的行为。NET框架。但是,如果您通过更改IIS来实现升级,ASP.NET使用默认的新模式。要禁用新的客户ID模式,要在以下设置 Web.config中 文件:
<pages ClientIDMode="AutoID" / >
HtmlEncode和UrlEncode方法对单引号编码的改变
在ASP.NET 4中,HttpUtility 和 HttpServerUtility类中的HtmlEncode 和 UrlEncode方法对单引号(')进行了如下改变:
HtmlEncode 编码为' .
UrlEncode 编码为 %27.
ASP.NET页面(.aspx)的页面分析更严格
ASP.NET 页面(.aspx 文件)和用户控件(.ascx 文件)在ASP.NET 4更严格,将拒绝多种无效的标记。例如,下面的两个片段在ASP.NET的早期版本中没问题,但在ASP.NET 4中分析器报错。
<asp:HiddenField runat="server" ID="SomeControl" Value="sampleValue"; />
请注意使其 HiddenField 标记失效的分号。
<asp:LinkButton runat="server" ID="SomeControl" οnclick="someControlClicked"
style="display:inline; CssClass="searchLink" />
注意 CssClass 前的引号的没有闭合。
浏览器定义文件的更新
旧的浏览器将不再支持,增加了google浏览器
http://aspnet.codeplex.com/releases/view/41420。
System.Web.Mobile.dll从Web配置文件中删除
System.Web.Mobile.dll类已内置到ASP.net4中 。
ASP.NET请求验证的改变
在ASP.NET请求验证功能提供了对跨站点脚本(XSS)攻击的保护。ASP.NET的早期版本仅仅在ASP.NET页执行。
在ASP.NET 4请求验证启用了所有的请求,因为它在HTTP的BeginRequest前启用,因此,请求验证适用于所有ASP.NET资源,而不仅仅是.aspx页。包括如Web服务和自定义HTTP处理程序。
要恢复到2.0的ASP.NET请求验证功能的行为,要在以下设置 Web.config中 文件添加:
<httpRuntime requestValidationMode="2.0" />
否则,即使在页面代码中添加validaterequest="false"也不起作用。
默认哈希算法现在改为HMACSHA256
ASP.NET使用加密和散列算法,以帮助表单身份验证Cookie数据和视图状态的安全。默认情况下,ASP.NET 4现在使用哈希操作对饼干和视图状态的HMACSHA256算法。 ASP.NET的早期版本使用的是旧式HMACSHA1算法。
如果您运行ASP.NET 2.0/ASP.NET 4混合的环境下,如窗体身份验证Cookie的数据必须工作across.NET框架版本。要配置一个ASP.NET Web应用程序使用旧HMACSHA1算法,要在以下设置 Web.config中 文件:
<machineKey validation="SHA1" />