我正在开展几个项目,其中一个是ASP.NET 4.5
应用程序,另一个是.Net Core API 1.1
项目。 asp.net应用程序使用HttpContext
类来读取cookie和页眉。现在,我需要将其移动到.net标准库,该项目可以使用。我在.net标准SDK中找不到HttpContext。有什么建议?
您的方法存在一个问题:.NET Standard是.NET可用的最简单的实现,这意味着只实现了与平台和场景无关的基本功能。
HttpContext
存在于.NET Framework和.NET Core上(顺便说一下,它们都实现了.NET Standard),但是特定于Web,它在.NET Standard上不存在。
所以,你有三个选择:
System.Web.HttpContext
Microsoft.AspNetCore.Http.HttpContext
HttpContext
的逻辑从.NET Standard项目移开但请注意,这些课程差异很大。 .NET Core版本是为ASP.NET Core创建的,与ASP.NET 4.5和olders有很大不同。
如果您的目标是.NET Standard 2.0,则可以使用qazxsw poi。
虽然它不包含在HttpContext
库中,但.NET Standard包(以.NET Standard 2.0为目标)将使您能够使用Microsoft.AspNetCore.Http.Abstractions
。
我不同意这些答案以及在网络项目中只有HttpContext
的无意义。这实际上紧密耦合,因为你想要能够重用代码,因此.net核心或.net标准中的类库应该能够使用HttpContext
因此,在.NET标准中,您要添加:
HttpContext
遗憾的是,虽然有很多不同的新HttpContext Microsoft.AspNetCore.Http.Abstractions
缺失,因此会话和请求等。
(是的,我得到了设计模式以及为什么要将它们分开并使其更易于测试)
这是一个小技巧,你可以拉下来获得HttpContext.Current
Current
我需要将这个[读取cookie和页面标题]移动到.NET标准库中,该标准库可供项目使用...
不要这样做。
假设您正在对从cookie中读取的数据执行操作X.您可以将此操作X移动到库中。 ASP.NET项目的工作是处理请求管道。读取cookie属于那里。
我同意上面的答案,如果可能的话,你想保持netstandard库简单,没有web请求。有一个针对.net标准的System.Net.Http nuget包。如果要创建库并且不需要asp.net核心的开销,那么在为完整框架和.net核心更新4.6.x时可以使用此方法。