Injecting IHttpContextAccessor into ApplicationDbContext ASP.NET Core 1.0(将 IHttpContextAccessor 注入 ApplicationDbContext ASP.NET Core 1.0)
问题描述
我试图弄清楚如何在 ASP.NET 控制器之外访问当前登录的用户名.
I am trying to figure out how to get access to the current logged in username outside of an ASP.NET Controller.
例如我正在尝试这样做:
For example I am trying to do this:
跟踪使用实体框架代码自动创建和修改字段
在 DbContext 中设置实体跟踪.
To setup tracking on entities in the DbContext.
这是我的 ApplicationDbContext 但我不断收到错误消息,提示 _httpContextAccessor is null:
Here is my ApplicationDbContext but I keep getting an error saying _httpContextAccessor is null:
private readonly IHttpContextAccessor _httpContextAccessor;
public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options, IHttpContextAccessor httpContextAccessor)
: base(options)
{
_httpContextAccessor = httpContextAccessor;
}
推荐答案
尝试注入 IHttpContextAccessor 接口
你甚至可以通过创建一个服务来进一步抽象它来提供你想要的信息(这是当前登录的用户名)
You can even abstract it further by creating a service to provide just the information you want (Which is the current logged in username)
public interface IUserResolverService {
string GetUser();
}
public class UserResolverService : IUserResolverService {
private readonly IHttpContextAccessor accessor;
public UserResolverService(IHttpContextAccessor accessor) {
this.accessor = accessor;
}
public string GetUser() {
var username = accessor?.HttpContext?.User?.Identity?.Name ;
return username ?? "unknown";
}
}
您现在需要在 Startup.ConfigureServices 中设置 IHttpContextAccessor 以便能够注入它:
You need to setup IHttpContextAccessor now in Startup.ConfigureServices in order to be able to inject it:
services.AddSingleton<IHttpContextAccessor, HttpContextAccessor>();
//OR
//services.AddHttpContextAccessor();
services.AddTransient<IUserResolverService, UserResolverService>();
并根据需要将其传递到您的存储库以记录关联的用户名
and pass that to your repository as needed to record associated username
这篇关于将 IHttpContextAccessor 注入 ApplicationDbContext ASP.NET Core 1.0的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:将 IHttpContextAccessor 注入 ApplicationDbContext ASP.NET Core 1.0
基础教程推荐
- 从 VS 2017 .NET Core 项目的发布目录中排除文件 2022-01-01
- 将事件 TextChanged 分配给表单中的所有文本框 2022-01-01
- 首先创建代码,多对多,关联表中的附加字段 2022-01-01
- 是否可以在 asp classic 和 asp.net 之间共享会话状态 2022-01-01
- JSON.NET 中基于属性的类型解析 2022-01-01
- 在 VS2010 中的 Post Build 事件中将 bin 文件复制到物 2022-01-01
- 如何动态获取文本框中datagridview列的总和 2022-01-01
- 经典 Asp 中的 ResolveUrl/Url.Content 等效项 2022-01-01
- 全局 ASAX - 获取服务器名称 2022-01-01
- 错误“此流不支持搜索操作"在 C# 中 2022-01-01
