Visual Studio 在.NET Framework 4.8中返回NULL值的用户主体.当前.电子邮件地址

wbgh16ku  于 2023-02-05  发布在  .NET
关注(0)|答案(1)|浏览(126)

我用winform程序写了一个获取用户电子邮件地址的程序,这个程序是几年前在.NET framework 4.0下写的,为了获取用户的电子邮件地址,我使用了下面这行代码:

using System.DirectoryServices.AccountManagement;
string sUserEmailAddress =  UserPrincipal.Current.EmailAddress;

这个方法奏效了。几天前我的电脑死机了。我换了一台新电脑,不得不重新安装VS22,.NET Framework是4.8。现在当我运行程序时,我得不到用户的电子邮件地址。我逐步执行程序,sUserEmailAddress = NULL。当我使用“立即”窗口时,我得到的是:

UserPrincipal.Current.EmailAddress
error CS0103: The name 'UserPrincipal' does not exist in the current context

我错过了什么?我错过了什么场景吗?
下面是代码的上半部分:

using System.DirectoryServices.AccountManagement;   

namespace InvoiceEmailer
   {
    public partial class frmInvEmailer : Form
    {
    
    System.Data.DataTable dtConvertBills = new System.Data.DataTable();
    DataSet ds = new DataSet();
    Document document = null;
    ArrayList cl = new ArrayList();
    Hashtable cm = new Hashtable();
    public static StreamWriter swl;

    String sTranUno = "";
    String emailAddress1 = "";
    private string sUserId = "";
    private string sUserEmailAddress = UserPrincipal.Current.EmailAddress;
roejwanj

roejwanj1#

我还介绍了System. DirectoryServices. AccountManagement,使用了UserPrincipal.Current.EmailAddress.,没有出现CS0103错误,但对于此类错误,主要有以下几种解决方法。

    • 溶液1**:重新安装系统.目录服务.帐户管理nuget包。
    • 溶液2**:UserPrincipal的全名是系统.目录服务.帐户管理. UserPrincipal,请将其更改为
string sUserEmailAddress = System.DirectoryServices.AccountManagement.UserPrincipal.Current.EmailAddress;
    • 溶液3**:视图的Web. config下的System. DirectoryServices. AccountManagement版本号与项目的Web. config版本号不一致。您需要比较视图的System. DirectoryServices. AccountManagement版本,以使其System. DirectoryServices. AccountManagement版本号一致。

相关问题