最近,一位客户抱怨我们的产品没有填充域名。
我们的代码使用用户名和用户的域名来查询其在Active Directory中的成员资格卷。
在我们的代码中,我们使用Environment.UserDomainName:
var domain = Environment.UserDomainName;
当我查看这个简单的代码行时,我发现它可能引发 PlatformNotSupportedException 和 InvalidOperationException 。
寻找另一种阅读域名的方法,我遇到了AppDomain.CurrentDomain:
var domain = AppDomain.CurrentDomain.FriendlyName.Split(".".ToArray())[0];
这很好,但它似乎也有一个可以触发的 AppDomainUnloadedException 。
第一个问题:
这两种方法是否总是为在本地PC上运行程序的给定用户返回相同的信息?
第二个问题:
一种方法是否比另一种更容易“异常”(同样,对于在本地PC上运行我们程序的给定用户而言)?
最后一个问题:
是否有一种获取运行我们的应用程序的用户的本地域名的方法,该方法不会引发异常?
编辑:对于Tyler Lee
答案 0 :(得分:2)
您是否尝试过查看AppDomain.CurrentDomain.FriendlyName
的价值是什么?
回答问题1:不,他们不会
问题2似乎不适用于考虑问题1
问题3:可能不是。 Environment.UserDomainName
似乎是获取网络域名的来源,正如您所发现的,它有可能产生异常。 MSDN页面提供了有关何时抛出这些异常的详细信息,您应该编写代码以便在发生这些异常时能够处理它。
答案 1 :(得分:0)
AppDomain.CurrentDomain Property是当前应用程序的域和当前线程。
换句话说,这是项目的领域。
在Visual Studio中,在“项目的属性”页面下,这将被称为项目的程序集名称。
相比之下,Environment.UserDomainName Property是当前用户登录的网络名称。
这两者无关。