.net标准库中的HttpContext

问题描述 投票:14回答:5

我正在开展几个项目,其中一个是ASP.NET 4.5应用程序,另一个是.Net Core API 1.1项目。 asp.net应用程序使用HttpContext类来读取cookie和页眉。现在,我需要将其移动到.net标准库,该项目可以使用。我在.net标准SDK中找不到HttpContext。有什么建议?

c# .net asp.net-core .net-standard
5个回答
15
投票

您的方法存在一个问题:.NET Standard是.NET可用的最简单的实现,这意味着只实现了与平台和场景无关的基本功能。 HttpContext存在于.NET Framework和.NET Core上(顺便说一下,它们都实现了.NET Standard),但是特定于Web,它在.NET Standard上不存在。

所以,你有三个选择:

  1. 定位.NET Framework并使用System.Web.HttpContext
  2. 目标.NET Core并使用Microsoft.AspNetCore.Http.HttpContext
  3. 将使用HttpContext的逻辑从.NET Standard项目移开

但请注意,这些课程差异很大。 .NET Core版本是为ASP.NET Core创建的,与ASP.NET 4.5和olders有很大不同。


4
投票

如果您的目标是.NET Standard 2.0,则可以使用qazxsw poi。

虽然它不包含在HttpContext库中,但.NET Standard包(以.NET Standard 2.0为目标)将使您能够使用Microsoft.AspNetCore.Http.Abstractions


2
投票

我不同意这些答案以及在网络项目中只有HttpContext的无意义。这实际上紧密耦合,因为你想要能够重用代码,因此.net核心或.net标准中的类库应该能够使用HttpContext

因此,在.NET标准中,您要添加:

HttpContext

遗憾的是,虽然有很多不同的新HttpContext Microsoft.AspNetCore.Http.Abstractions 缺失,因此会话和请求等。

(是的,我得到了设计模式以及为什么要将它们分开并使其更易于测试)

这是一个小技巧,你可以拉下来获得HttpContext.Current

Current

1
投票

我需要将这个[读取cookie和页面标题]移动到.NET标准库中,该标准库可供项目使用...

不要这样做。

假设您正在对从cookie中读取的数据执行操作X.您可以将此操作X移动到库中。 ASP.NET项目的工作是处理请求管道。读取cookie属于那里。


0
投票

我同意上面的答案,如果可能的话,你想保持netstandard库简单,没有web请求。有一个针对.net标准的System.Net.Http nuget包。如果要创建库并且不需要asp.net核心的开销,那么在为完整框架和.net核心更新4.6.x时可以使用此方法。

© www.soinside.com 2019 - 2024. All rights reserved.