我必须开发一个Web应用程序,该应用程序将在Intranet环境中的IIS上托管。假定该应用程序在Windows Auth上具有单个符号,并在导航栏上显示用户的显示名称。用户信息存储在Active Directory中。
该应用程序是使用MVC asp.net Core 2.1开发的。我正在使用如下所示,在我的BaseController中,我正在尝试获取用户信息并显示在_Layout上。 Using(_context)给出了一个错误,指出部署后identityValue不能为null。代码在Visual Studio(即2019)的调试模式下运行良好。
我的web.config文件也显示在下面
PrincipalContext _context = new PrincipalContext(ContextType.Domain);
if (_context != null)
{
using (_context)
{
UserPrincipal user = UserPrincipal.FindByIdentity(_context, username);
if (user != null)
{
ViewData["UserName"] = user.DisplayName;
ViewData["EmailAddress"] = user.EmailAddress;
ViewData["EmployeeNumber"] = user.EmployeeId;
ViewData["EmployeeNumber"] = user.EmployeeId;
}
}
}
else
{
ViewData["UserName"] = "User";
}
我希望输出与运行Visual Studio时的输出一样