在使用 GetDomain 之前,是否有任何方法可以确定 ActiveDirectory 中的域是否可用?我有一个应用程序,用户应该能够自己添加域,如果他们输入无效域,应该会出现错误。现在它是通过捕获下面的异常来处理的,但是用户输入无效域几乎不是异常发生,并且异常也可能需要很长时间才能抛出,特别是如果输入了 ip 地址(看起来像) .有没有更好的解决方案?

public Domain RegisterUserDirectory(string domainId) {
  DirectoryContext context = new DirectoryContext(DirectoryContextType.Domain, domainId);

  System.DirectoryServices.ActiveDirectory.Domain domain;
  try {
    domain = System.DirectoryServices.ActiveDirectory.Domain.GetDomain(context);
  }
  catch (ActiveDirectoryNotFoundException adne) {
    // handle
  }
  catch (Exception e) {
    Log.Warning("Failed to contact domain {0}: {1}", domainId, e.Message);
    throw;
  }

  ...
  ...
}

最佳答案

不幸的是,我认为没有真正的其他方式。想想你如何验证一个IP地址是可访问的。您所能做的就是尝试连接或发送 ping 请求。在此之后,您只需要等待是否有人会回答,并且由于连接可能很慢,超时时间很高,您必须一直等待。

为了获得更好的用户体验,您所能做的就是将这项工作置于另一个步骤(或后台工作人员)中,以便您的 GUI 仍然具有响应性并向用户显示一些进度或选取框。然后,您还可以通过简单地中止此线程来添加用户取消连接试用的可能性。

因此,这不会使它更快,但可以更好地响应用户,因此最终感觉更快。

关于c# - 事件目录 : How to find if a domain is available?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4666334/

10-10 06:00