本文档概述了在开始迁移之前应了解的 ASP.NET Framework 和 ASP.NET Core 之间的重要技术差异。
URI 解码差异
ASP.NET Core 以不同的方式处理 URI 编码:
| 字符 | 编码 | ASP.NET Core | ASP.NET 框架 |
|---|---|---|---|
\ |
%5C |
\ |
/ |
/ |
%2F |
%2F |
/ |
建议:使用 new Uri(this.AspNetCoreHttpRequest.GetEncodedUrl()) 进行正确的 URL 处理。
用户机密迁移
用户机密需要特殊处理。 有关当前指南 ,请参阅 GitHub 问题 #27611 。
CultureInfo.CurrentCulture 差异
注释
ASP.NET Core 不会为 ASP.NET Framework 等请求自动设置 CultureInfo.CurrentCulture 。 必须显式配置本地化中间件。
在 ASP.NET Framework 中,CurrentCulture 已为请求配置,但在 ASP.NET Core 中不会自动执行此操作。 你必须将相应的中间件添加到你的管道中。
建议:有关如何启用此功能的详细信息 ,请参阅 ASP.NET 核心本地化 。
使用与 ASP.NET Framework 类似的行为启用此功能的最简单方法是将以下内容添加到管道:
app.UseRequestLocalization();
线程处理注意事项
注释
这利用 System.Web 适配器 来简化迁移。
ASP.NET Core 不能保证请求的线程关联。 如果代码需要线程关联,则必须确保正确同步或使用 SingleThreadedRequest 属性:
[SingleThreadedRequest]
public class LegacyController : Controller
{
public IActionResult Index()
{
// Some code that requires to be run on a single thread
return View();
}
}