我在asp.net网站上有此问题,但对于Windows计算机上的.Net Core应该是通用的。
如果我尝试翻译不存在的域,我会得到一个异常,这是可以的,但是,接下来所有具有正确域名的后续调用都会引发一个异常“ System.ObjectDisposedException:安全句柄已关闭”。
我要问一些解决方法,因为名称转换在重新启动应用程序之前是行不通的。
此行为可以用
重现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();
}
}