windows - NTAccount.Translate 失败后出现异常“System.ObjectDisposedException:安全句柄已关闭”
问题描述
我在 asp.net 网站上遇到了这个问题,但对于 windows 计算机上的 .Net Core 来说应该是通用的。
如果我尝试翻译一个不存在的域,我会得到一个异常,这没关系,但是接下来所有具有正确域名的调用都会抛出一个异常“System.ObjectDisposedException:安全句柄已关闭”。
我在询问一些解决方法,因为名称翻译在重新启动应用程序之前不起作用。
这种行为可以重现
- Microsoft.NETCore.App 2.2.0
- System.Security.Principal.Windows 4.5.1
class Program
{
static string Translate(string gName)
{
try
{
var nt = new NTAccount(gName);
if (nt.IsValidTargetType(typeof(SecurityIdentifier)))
{
var si = (SecurityIdentifier)(nt).Translate(typeof(SecurityIdentifier));
return si.ToString();
}
}
catch (Exception ex)
{
Console.Write(ex.ToString()+"\n\n");
}
return "";
}
static void Main(string[] args)
{
var si= new SecurityIdentifier(WellKnownSidType.BuiltinAdministratorsSid, null);
var na = si.Translate(typeof(NTAccount));
var knownName = na.ToString();
foreach (var aName in new[] { knownName,
@"DOMAIN_NOT_ESISTS\Benutzer",
knownName })
{
Console.WriteLine(aName);
Console.WriteLine(Translate(aName));
}
Console.ReadKey();
}
}
解决方案
推荐阅读
- c# - 使用 Automapper 映射/合并两个对象但忽略默认值
- c++ - 用户输入无效整数时如何停止无限循环
- javascript - 减少数组的长度 - Javascript
- docker-compose - docker-composer.yml 文件中的 chown 文件夹权限
- mysql - MySQL LN 带除法
- javascript - 使用“导航”作为组件的功能
- java - Spring Security 不适用于其他帖子网址
- pandas - Pandas 将单元格中的列表拆分为单独的列
- csv - Perl CSV 读取不存在的字符
- java - simple_list_item_1 是什么意思?