Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 获取Windows登录用户';离线时发送电子邮件_C#_Windows_Userprincipal - Fatal编程技术网

C# 获取Windows登录用户';离线时发送电子邮件

C# 获取Windows登录用户';离线时发送电子邮件,c#,windows,userprincipal,C#,Windows,Userprincipal,我们使用此代码获取当前登录用户的电子邮件: var currentUsersEmail = UserPrincipal.Current.EmailAddress; 这在网络上运行时效果很好。然而,我们有笔记本电脑用户远程运行我们的代码,并且处于断开连接状态。处于此状态时,上述代码会导致此异常: System.DirectoryServices.AccountManagement.PrincipalServerDownException Message: "The server could no

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

var currentUsersEmail = UserPrincipal.Current.EmailAddress;
这在网络上运行时效果很好。然而,我们有笔记本电脑用户远程运行我们的代码,并且处于断开连接状态。处于此状态时,上述代码会导致此异常:

System.DirectoryServices.AccountManagement.PrincipalServerDownException
Message: "The server could not be contacted."
是否有人知道一种检索当前用户电子邮件的方法,该方法在连接/在网络上和断开连接时都可以使用


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

您可以重写应用程序,使其在第一次使用
UserPrincipal.Current.EmailAddress
时,或者在其联机时使用,然后将该信息保存在用户的AppData文件夹或注册表中,以供脱机工作时参考。在脱机工作之前,需要至少联机运行一次应用程序,但我不知道如何在不询问用户或使用配置文件的情况下执行此操作


System.DirectoryServices.AccountManagement
命名空间根本无法脱机工作。这就像问一个数据库驱动的应用程序在没有访问数据库的情况下如何工作。

我想你的意思是,从加入域的机器的缓存配置文件数据?”否则,谁知道您需要安装的电子邮件程序的哪个电子邮件地址。正确。当我登录时,它应该以某种方式缓存配置文件,以便访问。这是一个很棒的主意。谢谢