- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有静态助手类
public static class Current
{
public static string Host
{
get { return "httpContextAccessor here"; }
}
}
如何访问 Host 属性中的当前 HttpContext?
最佳答案
你不能也不应该。这完全违背了拥有依赖注入(inject)系统的全部目的。静态类(用于运行时数据或服务定位器)是一种反模式。
在 ASP.NET Core 中你必须注入(inject) IHttpContextAccessor
在你需要的类里面。你可以制作一个非静态类并按照以下方式做一些事情:
public class RequestInformation : IRequestInformation
{
private readonly HttpContext context;
public RequestInformation(IHttpContextAccessor contextAccessor)
{
// Don't forget null checks
this.context = contextAccessor.HttpContext;
}
public string Host
{
get { return this.context./*Do whatever you need here*/; }
}
}
然后在你的类库中注入(inject)它:
public class SomeClassInClassLibrary
{
private readonly IRequestInformation requestInfo;
public SomeClassInClassLibrary(IRequestInfomation requestInfo)
{
// Don't forget null checks
this.requestInfo = requestInfo;
// access it
var host = requestInfo.Host;
}
}
请注意您的 SomeClassInClassLibrary
必须用 Scoped
解决或 Transient
模式,它不能是 Singleton
,因为 HttpContext
仅在请求期间有效。
或者如果SomeClassInClassLibrary
必须是单例,你必须注入(inject)一个工厂并解决 IRequestInformation
按需(即在 Action 中)。
最后但同样重要的是,IHttpContextAccessor
默认情况下未注册。
IHttpContextAccessor can be used to access the HttpContext for the current thread. However, maintaining this state has non-trivial performance costs so it has been removed from the default set of services.
Developers that depend on it can add it back as needed:
services.AddSingleton<IHttpContextAccessor, HttpContextAccessor>();
来源:The IHttpContextAccessor service is not registered by default
关于c# - .NET Core IHttpContextAccessor 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40303982/
我有一个使用 IHttpContextAccessor 获取 header 值的方法 public class HeaderConfiguration : IHeaderConfiguration {
我在尝试从 IHttpContextAccessor 字段获取 httpcontext 时遇到问题,该字段在类中始终为 null。 有我的startup.cs public void Configur
我正在尝试使用 .NET Core 运行时将 ASP.NET MVC 站点迁移到 ASP.NET Core。以前我们可以从 session 存储中获取对象,即使是在不同的程序集中,使用 var obj
我有静态助手类 public static class Current { public static string Host { get { return "http
这是一个asp.net核心项目。这是我的代码。 services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme) .Ad
我正在尝试在静态类中创建通用 addReplaceCookie 方法。该方法看起来像这样 public static void addReplaceCookie(string cookieName,
在我见过的所有 IHttpContextAccessor 注入(inject)示例中,它都被设置为 Singleton。 例子: How to add IHttpContextAccessor in
我在 .NET 6 Core 中创建了自定义授权策略。它可以很好地满足我的要求,但是我在调试时发现错误 - 尚未为此应用程序或请求配置 session 。但是我已经在我的 program.cs 中
David Fowler 和 Damian Edwards 最近在伦敦 NDC 发表了关于调试 asp.net core 2.0 的演讲。 In that talk ,他们会警告执行异步操作的 Con
当我尝试从 IHttpContextAccessor 字段始终为空获取 httpcontext 时遇到问题。 这是我的startup.cs public void ConfigureServi
我正在将 Multi-Tenancy 应用程序从 Webapi 迁移到 aspnet core。在 webapi 版本中,我使用 TenantIdentificationStrategy 根据 Htt
我一直在模拟 IHttpContextAccessor 以进行一些 Web API 集成测试。我的目标是能够模拟 IHttpContextAccessor 并返回 NameIdentifier 声明和
我正在尝试使用 Jason Taylor's Clean Architecture Template ,这个模板使用NSwag自动创建了一个TypeScript Client(Angular),但是我
目标:将 IHttpContextAccessor 作为依赖注入(inject)到 autmapper 配置文件的构造函数中 原因:我需要传入当前用户的身份名称作为构建我的域对象之一的一部分 问题获取
在启动文件中,我试图在构造函数本身中注入(inject) IHttpContextAccessor。 在本地运行 API 时,IHttpContextAccessor 成功注入(inject)到启动类
.NET Core 2.2 成功登录后,HttpContext.User.Claims 和 IHttpContextAccessor 均返回空值这是我的启动服务, services.AddDbCo
我想尝试一下使用 Blazor 服务器端,到目前为止,我已经设法以某种方式克服了大多数令人头疼的问题,并且很享受它,直到现在。 我正在尝试为 Google Recaptcha v3 编写一个验证器,它
我有一个 Controller 操作方法: public void Register([FromBody]RegisterTenantCommand message) { ... } 我有 R
我开始将我的 asp.net core RC1 项目转换为 RC2 并面临现在的问题 IHttpContextAccessor没有解决。 为了简单起见,我使用 Visual Studio 模板 ASP
我想设置一个服务,将当前的 HttpContext 注入(inject)到我项目的一个类中,以便它可以管理 cookie。 我在我的 Startup.cs 类中这样设置服务: public void
我是一名优秀的程序员,十分优秀!