我一直在尝试在 ASP.NET MVC 和 system.web 中实现 http 上下文,它只会允许我使用 HttpContext.Current 来访问上下文。不管怎样,我首先在 StartUp 类的 configureService 方法中注入(inject)了 IhttpcontextAccessor。 我发布这个是为了看看是否有人使用 .Net Core 2.0 实现了这个。 如果是这样,请随时分享知识。提前致谢。
services.AddSingleton<HttpContextAccessor, HttpContextAccessor>();
最佳答案
如果您需要来自 Controller 的它,那么只需使用 HttpContext
,正如 Muqeet 的回答所说。
如果您确实需要注入(inject)它,那么您使用 AddSingleton
就走在了正确的轨道上,但是您有一个轻微的拼写错误:
services.AddSingleton<IHttpContextAccessor, HttpContextAccessor>();
注意第一种类型中的 I
。
然后设置你的构造函数:
public class UserService : IUserService {
private readonly HttpContext _context;
public UserService(IHttpContextAccessor httpContextAccessor) {
_context = httpContextAccessor.HttpContext;
}
}
然后您可以在类(class)的任何其他地方使用context
。
这是依赖注入(inject)的基础。 AddSingleton
使其可用于注入(inject)。然后你通过将它添加到你的构造函数来在你需要它的地方请求它。
Maarten 在他的评论中链接到的那篇文章有更详细的解释。
关于c# - 如何在.net core 2.0 中实现HttpContext?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47815258/