【发布时间】:2018-03-14 21:59:27
【问题描述】:
最近,一位客户抱怨我们的产品没有填充域名。
我们的代码使用用户名和用户的域名来查询他们在 Active Directory 中的会员名册。
在我们的代码中,我们使用Environment.UserDomainName:
var domain = Environment.UserDomainName;
当我查看这行简单的代码时,我发现它可能引发 PlatformNotSupportedException 和 InvalidOperationException。
寻找另一种读取域名的方法,我偶然发现了AppDomain.CurrentDomain:
var domain = AppDomain.CurrentDomain.FriendlyName.Split(".".ToArray())[0];
这很好,但它似乎也有一个可以触发的 AppDomainUnloadedException。
第一个问题:
对于在本地 PC 上运行我们程序的给定用户,这两种方法是否总是返回相同的信息?
第二个问题:
一种方法是否比另一种方法更不“容易发生异常”(同样,对于在本地 PC 上运行我们程序的给定用户)?
最后一个问题:
有没有一种方法可以获取运行我们应用程序的用户的本地域名并且不会引发异常?
编辑:致泰勒·李
【问题讨论】:
-
您在尝试使用
Environment.UserDomainName时遇到了哪些异常? -
我们的客户报告了 PlatformNotSupportedException。我的开发 PC 上没有任何错误。这就是我问这个问题的原因。
-
您的客户在哪个平台上运行?
-
@TylerLee - 我上周将该问题发送给他们的代表询问他们,但我没有收到回复。我知道他们正在 PC 上进行测试,但我不知道它是独立的还是域的一部分。
标签: c# winforms visual-studio-2015 dns active-directory