Vis*_*l A 18 .net c# asp.net-core .net-standard
我正在研究几个项目,其中ASP.NET 4.5
一个是应用程序,另一个是.Net Core API 1.1
项目.asp.net应用程序使用HttpContext
类来读取cookie和页眉.现在,我需要将其移动到.net标准库,该库可供项目使用.我在.net标准SDK中找不到HttpContext.有什么建议?
SO *_*ood 16
您的方法存在一个问题:.NET Standard是.NET可用的最简单的实现,这意味着只实现了与平台和场景无关的基本功能.
HttpContext
.NET Framework和.NET Core都存在(顺便说一下,它们都实现了.NET标准),但是特定于Web,它在.NET Standard上不存在.
所以,你有三个选择:
System.Web.HttpContext
Microsoft.AspNetCore.Http.HttpContext
HttpContext
远离.NET Standard项目的逻辑但请注意,这些课程差异很大..NET Core版本是为ASP.NET Core创建的,与ASP.NET 4.5和olders有很大不同.
我不同意这些答案以及关于只HttpContext
在 Web 项目中拥有的无意义。这实际上是紧密耦合的,因为您希望能够重用代码,因此 .net 核心或 .net 标准中的类库应该能够使用HttpContext
因此,在 .NET Standard 中,您要添加:
Microsoft.AspNetCore.Http.Abstractions
Run Code Online (Sandbox Code Playgroud)
可悲的是,虽然新的 HttpContext 有很多不同之处,但
HttpContext.Current
缺少会话和请求等。
(是的,我了解了设计模式以及为什么要分离出来并使其更易于测试)
这里有一个小技巧,你也可以得到 Current
namespace System.Web
{
public static class HttpContext
{
private static Microsoft.AspNetCore.Http.IHttpContextAccessor m_httpContextAccessor;
public static void Configure(Microsoft.AspNetCore.Http.IHttpContextAccessor httpContextAccessor)
{
m_httpContextAccessor = httpContextAccessor;
}
public static Microsoft.AspNetCore.Http.HttpContext Current
{
get
{
return m_httpContextAccessor.HttpContext;
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
如果您的目标是 .NETStandard 2.0,您可以使用HttpContext
.
虽然它不包含在.NET Standard库中,但该Microsoft.AspNetCore.Http.Abstractions
包(面向 .NET Standard 2.0)将使您能够使用HttpContext
.
归档时间: |
|
查看次数: |
12515 次 |
最近记录: |