2

我们使用此代码获取当前登录用户的电子邮件:

var currentUsersEmail = UserPrincipal.Current.EmailAddress;

这在网络上工作正常。但是,我们有笔记本电脑用户远程运行我们的代码并处于断开状态。上述代码在此状态下会导致此异常:

System.DirectoryServices.AccountManagement.PrincipalServerDownException
Message: "The server could not be contacted."

有谁知道一种检索当前用户电子邮件的方法,该方法在连接/在网络上和断开连接时都可以使用?

更新:如果您想知道我们为什么要这样做。我们的系统有很多通过电子邮件发送警报的方法。当我们的开发人员运行自动化测试时,我们希望将电子邮件发送给当前登录的用户(即开发人员),以便他们可以验证格式。

4

1 回答 1

2

您可以重写您的应用程序,使其UserPrincipal.Current.EmailAddress第一次使用,并且可能在它在线时使用,然后将该信息保存在用户的 AppData 文件夹或注册表中以供离线工作时参考。在离线工作之前,它需要至少在线运行一个应用程序,但我看不出在不询问用户或使用配置文件的情况下你还能如何做到这一点。

命名空间根本不可能System.DirectoryServices.AccountManagement离线工作。这就像问一个数据库驱动的应用程序如何在不访问数据库的情况下工作。

于 2014-04-24T12:12:35.987 回答