由于没有实体正文,因此不存在窗体变量和视图状态。 这样一来,便没有可供 .aspx 页处理程序用来确定应引发哪个事件(如果有)的信息。 因此,不会运行针对受影响 .aspx 页的任何回发事件处理程序。
有关解决可能因为此更改而引发的问题的方法,请参阅 ASP.NET 网站上的
ASP.NET 4 Breaking Changes
(ASP.NET 4 重大更改)文档中“可能会在 IIS 7 或 IIS 7.5 集成模式下的默认文档中引发的事件处理程序”。
ASP.NET 使用加密算法和哈希算法来帮助保护数据(如窗体身份验证 Cookie 和视图状态)。 默认情况下,ASP.NET 4 使用
HMACSHA256
算法对 Cookie 和视图状态进行哈希操作。 早期版本的 ASP.NET 使用较早的
HMACSHA1
算法。
如果运行混合了 ASP.NET 2.0 和 ASP.NET 4 的应用程序,其中的数据(如窗体身份验证 Cookie)必须跨多个 .NET Framework 版本工作,请通过在 Web.config 文件中添加以下设置,将 ASP.NET 4 Web 应用程序配置为使用较早的
HMACSHA1
算法:
<machineKey validation="SHA1" />
在 Internet Explorer 中托管控件
无法再使用 Internet Explorer 来托管 Windows 窗体控件,因为可通过更优的解决方案在 Web 上托管控件。 因此,已从 .NET Framework 中删除 IEHost.dll 和 IEExec.exe 程序集。
可使用以下技术在 Web 应用程序中进行自定义控件开发:
*
HtmlEncode
方法将单引号的实例编码为
'
*
UrlEncode
方法将单引号的实例编码为
%27
检查使用
HtmlEncode
和
UrlEncode
方法的位置的代码,并确保对编码进行的更改不会导致将影响应用程序的更改。
ASP.NET 2.0 应用程序中的 HttpException 错误
在 IIS 6 上启用 ASP.NET 4 后,IIS 6 上运行的 ASP.NET 2.0 应用程序(在 Windows Server 2003 或 Windows Server 2003 R2 中)可能会生成错误,如下所示:
System.Web.HttpException: Path '/[yourApplicationRoot]/eurl.axd/[Value]' was not found.
* 如果无需 ASP.NET 4 即可运行网站,请重新映射该网站以改用 ASP.NET 2.0。
\- 或 -
* 如果需要 ASP.NET 4 才能运行网站,请将所有子 ASP.NET 2.0 虚拟目录移至映射到 ASP.NET 2.0 的其他网站。
\- 或 -
* 禁用无扩展 URL。 有关详细信息,请参阅 ASP.NET 网站上的
ASP.NET 4 Breaking Changes
(ASP.NET 4 重大更改)文档中“ASP.NET 2.0 应用程序可能生成引用 eurl.axd 的 HttpException 错误”。
成员资格类型
已将 ASP.NET 成员资格中使用的某些类型(例如
MembershipProvider
)从 System.Web.dll 移至 System.Web.ApplicationServices.dll 程序集。 移动这些类型是为了解析客户端中的类型与扩展的 .NET Framework SKU 中的类型之间的体系结构层依赖关系。
对于已从早期版本的 ASP.NET 升级的类库以及使用已移动的成员资格类型的类库,在 ASP.NET 4 项目中使用这些类库时,可能无法编译它们。 如果是这样,请在类库项目中添加对 System.Web.ApplicationServices.dll 的引用。
Menu 控件更改
对
Menu
控件进行更改会导致发生以下行为:
在运行 Windows XP 但未安装 .NET Framework 3.5 SP1 的计算机上,使用
PrintDialog
中以外的 WPF API 进行打印将依赖于 WINSPOOL。 有些打印机功能不会被报告出来,有些打印机设置也不会在打印期间应用。
如果需要,请安装 Microsoft XML 纸张规范 Essentials Pack。