Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 有没有办法在没有第三方库的情况下在.NET Core中获取EmployeeID?_C#_Asp.net Core - Fatal编程技术网

C# 有没有办法在没有第三方库的情况下在.NET Core中获取EmployeeID?

C# 有没有办法在没有第三方库的情况下在.NET Core中获取EmployeeID?,c#,asp.net-core,C#,Asp.net Core,我曾经使用UserPrincipal类来检索用户的active directory信息,特别是EmployeeId(不是用户名,我们通常不使用用户名将员工与sql中的特定数据点联系起来)。然而,在.NETCore中,这个类并不存在,而且我对.NETCore还是相当陌生,所以我不确定它的许多特性在Intranet环境中是如何工作的。我知道很多人可能不会使用asp.net内核,因为它是跨平台的,而其他服务器类型对active directory一无所知 下面是我在常规asp.net环境中用来获取员工

我曾经使用UserPrincipal类来检索用户的active directory信息,特别是EmployeeId(不是用户名,我们通常不使用用户名将员工与sql中的特定数据点联系起来)。然而,在.NETCore中,这个类并不存在,而且我对.NETCore还是相当陌生,所以我不确定它的许多特性在Intranet环境中是如何工作的。我知道很多人可能不会使用asp.net内核,因为它是跨平台的,而其他服务器类型对active directory一无所知

下面是我在常规asp.net环境中用来获取员工id的代码

var userContext = System.Web.HttpContext.Current;
PrincipalContext pcxt = new PrincipalContext(ContextType.Domain, "mydomain.com");
UserPrincipal uPrincipal = UserPrincipal.FindByIdentity(pcxt, IdentityType.SamAccountName, userContext.User.Identity.Name);
return uPrincipal.EmployeeId;

我可以使用什么样的代码(如果有的话)来获取相同的信息?没有第三方库是否可能?IIS服务器似乎可以通过声明传输我需要的某种信息?我尝试过做研究,但每件事都会让我走上更多的研究道路,我不知道从哪里开始。

您现在正在寻找的东西已经转移到了Net Core。用户主体位于HttpContext上,但是您可以通过IHttpContextAccessor进行访问,IHttpContextAccessor使用依赖项注入进行注入。。这是一个来自微软的例子,它的起点是:

好的,看起来对于.net core 2>来说,微软再次实现了主体上下文库,尽管文档中说单击.net core 2.2时没有页面。至少,我能够安装该软件包,并且它可以正常工作。它是由微软创作的,所以我不认为它是第三方。

幸运的是,由于以下回答,我们能够找到包裹:


代码与我的问题中的代码完全相同。所有功能似乎都完好无损

谢谢,不过我知道如何使用依赖项注入在控制器以外的其他类中获取HttpContext对象。我想知道的是,是否有办法获取员工id(而不是httpcontext上的用户上下文提供的用户名),因为据我所知,数据点是特定于Active Directory的。我们可能在谈论同样的事情,我可能只是不知道如何从HttpContext获取我正在寻找的active directory信息,因为我只在.NET中真正处理过UserPrincipal类。您可以在这个链接上看到,它说类在Core2.2S中不可用,所以我处理这个问题的方法是使用“声明”机制。。它允许您根据编码方式从HttpContext中添加和提取特定声明。具体添加方式取决于您选择的身份验证方法当前选择的方法是windows身份验证。在launchSettings.json中,我将iisSettings设置为:windowsAuthentication:true,anonymousAuthentication:false。Startup.cs中没有服务的附加设置。