- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
在 VisualStudio 2017 .NET Core 2.0 控制台应用程序中具有以下代码
using System;
using System.Security.Principal;
namespace smallTests
{
class Program
{
static void Main(string[] args)
{
var identity = WindowsIdentity.GetCurrent();
}
}
}
为什么会出现错误:
The name 'WindowsIdentity' does not exist in the current context
如果我能在 .Net Core docs 的 .NET Core 2.0 库中看到这个类?
相同的代码适用于 .NET 控制台应用程序。
[编辑]
@Will @JohnnyL 评论说我不引用,System.Security.Principal.Windows.dll
,那是真的。
但我很好奇为什么它不起作用,因为在 .NET 4.6.1 项目(其中类 WindowsIdentity 可见)中,我也没有具体引用此 System.Security.Principal.Windows.dll
。但是我指的是 System.dll。
我一直认为它的工作方式类似于 namespace 层次结构。例如,当我提到
System.Security.Principal.dll
我可以使用里面的类
System.Security.Principal.Windows.dll
。
我错了吗?
我手动将 System.Security.Principal.dll
添加到 .NetCore 解决方案,但它仍然不起作用。
[EDIT2]
@Will 非常感谢您解释这个主题,它对我帮助很大。我试图弄清楚 WindowsIdentity 是否与 Core 兼容,似乎是这样,请参阅:
在此apisof.net在声明区域我可以看到 WindowsIdentity 在 .Net Core 2.0 System.Security.Principal.Windows, Version=4.1.1.0, PublicKeyToken=b03f5f7f11d50a3a
但是我没有 System.Security.Principal.Windows.dll
的引用,我应该添加它吗?如果是,来自哪里?
在.NET Core api reference我在列表中看到了这个类(如果它与核心不兼容,那么该列表的目的是什么?
我还在 that link 中找到了有关该类(class)的信息
我是不是找错地方了?
最佳答案
Microsoft 几周前发布了适用于 .NET Core 的 Windows 兼容包,
并且通过分析System.Security.Principal.Windows.csproj
的源代码和添加它的提交,
我的结论是,这也是仅适用于 Windows 的兼容性库的一部分,因此只能在 Windows 上使用。
要将其添加到您的项目中,请打开您的 csproj 并为 System.Security.Principal.Windows
手动添加一个 PackageReference
标记(或使用 Visual Studio 的 NuGet 包管理器) .
关于c# - 为什么 WindowsIdentity 类在 .NET Core 中不可见,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47776680/
我正在尝试检查Powerhell脚本是否以管理员身份运行。 在网上搜索后,我得到了一些运行良好的示例代码。 为了获得WindowsPrincipal对象,我发现了以下两个示例代码。 第一: New-O
我正在尝试使用 SID-s 检查用户是否属于某些组。 我正在使用 WindowsIdentity.Groups ,但后来注意到有时它不显示用户属于管理员组。 搜索了一段时间后,我发现不是Windows
我试图拦截 WindowsAuthenticationModule 以另一个用户身份登录到应用程序,但我无法在不知道他的密码的情况下创建新的 WindowsIdentity。该代码将在管理员权限下运行
我正在开发具有以下详细信息的客户端服务器应用程序: Client(C++) -----------HTTPS--- Server (C#/WCF) 服务器: 与 Windows Active
当我像这样使用 WindowsIdentity 模拟时: WindowsIdentity newId = null; WindowsImpersonationContext impe
我正在构建一个站点,该站点使用当前用户的 WindowsIdentity 获取用户信息。我从中获得的主要信息是 ssid。 我按如下方式为当前用户执行此操作 IntPtr logonToken = W
ServiceSecurityContext 为何包含 WindowsIdentity 属性? 即,如果用户使用 Windows 身份验证机制进行身份验证,则 ServiceSecurityConte
获取当前用户的用户名和/或 SID 时,首选方法是什么? 是否使用: WindowsIdentity.GetCurrent().Owner 或者: WindowsIdentity.GetCurrent
我正在尝试在我的 WPF 客户端/服务器 (WCF) 应用程序中使用 Windows Identity Foundation 进行授权,该应用程序可能会或可能不会在与提供身份验证的事件目录相同的信任环
我正在一个安全的服务器上运行一个应用程序(我必须远程访问并且必须通过电子邮件将文件发送给某人以便他们将它们放到服务器上,因此更改代码不是一个快速的过程)。 在某一时刻,该服务通过获取登录用户 Oper
我有一个由 IIS 托管的 Web 应用程序。它配置了表单例份验证和匿名身份验证,并且启用了模拟。应用程序池帐户是网络服务。匿名帐户是 Costa。 Costa 可以访问数据库。 NetworkSer
假设我有一个 WindowsIdentity 的实例,并且想要获取它所属的组。我使用以下代码获取列表: WindowsIdentity identity = null; // get iden
我正在使用模拟在连接到域的 Windows 7 计算机上实例化 WindowsIdentity。我通过 Groups 属性取回了很多组。一些域、本地和内置但我没有得到用户所在的内置管理员组。我很困惑为
我正在使用 WindowsIdentity 获取当前用户的 ID 以执行 SSO。在大多数情况下,我得到的正是我想要的,但对于某些用户来说,我得到的结果很奇怪。示例代码: IIdentity WinI
TL;DR WindowsIdentity 的 Token 属性中是否包含用户 token (例如,someIdentity.Token) 被欺骗: var validated = new Windo
我有以下代码: var baseUrl = "https://" + GetIdentityProviderHost(environment) + "/oauth2/authorize"; var q
我正在使用 Windows 身份验证的 ASP.NET 应用程序中。 我正在使用 HttpContext.Current.User.Identity.Name 获取当前经过身份验证的用户的用户名,这会
我有一个安装项目(在 Windows 7 上运行)在提交时启动自定义操作,启动刚刚安装的应用程序。在此应用程序启动期间,我有一个方法可以检查当前用户名以执行某些身份验证。当从此自定义操作启动时,我得到
如何从收到的msmq消息中获取发件人的WindowsIdentity? 我使用 msmq 作为传输和安全应用程序 block ,并使用授权规则提供程序进行操作授权。我需要 WindowsPrincip
我有一个 ASP.NET 网站,它要求我的应用程序池是经典 .Net 应用程序池。该站点在 IIS 7 上的 .NET 3.5 上运行。当我尝试获取已登录用户的 Active Directory 用户
我是一名优秀的程序员,十分优秀!