我正在尝试使用主要上下文连接到活动目录。我试过下面的代码。
using (var context = new PrincipalContext(ContextType.Domain,
ConfigurationManager.AppSettings["DomainName"].ToString()))
{
try
{
writeLog("Before:" + isCheckUserName);
writeLog("Context name:" + context.Name);
var user = UserPrincipal.FindByIdentity(context, GetCurrentWindowsLogin());
writeLog("GetCurrent:" + GetCurrentWindowsLogin());
writeLog("After:" + user.EmployeeId);
if (user != null) {
StaffName = user.DisplayName;
StaffID = user.EmployeeId;
}
}
catch (Exception ex)
{
writeLog($"Second try: Error - {ex.Message} Inner Exception: {ex.InnerException.Message}");
}
}
此代码在客户端的本地计算机上运行良好,但在客户端服务器上传后会抛出空引用异常。
任何想法。 感谢。
答案 0 :(得分:0)
我自己解决了这些问题。 我在PrincipleContextContext构造器下面添加了两个参数。这是Active Directory域用户名和密码。
using (var context = new PrincipalContext(ContextType.Domain,
ConfigurationManager.AppSettings["DomainName"].ToString(),
ConfigurationManager.AppSettings["ADUserName"].ToString(),
ConfigurationManager.AppSettings["ADPassword"].ToString()))
{
try
{
writeLog("Before:" + isCheckUserName);
writeLog("Context name:" + context.Name);
var user = UserPrincipal.FindByIdentity(context, GetCurrentWindowsLogin());
writeLog("GetCurrent:" + GetCurrentWindowsLogin());
writeLog("After:" + user.EmployeeId);
if (user != null)
{
StaffName = user.DisplayName;
StaffID = user.EmployeeId;
}
}
catch (Exception ex)
{
writeLog($"Second try: Error - {ex.Message} Inner Exception: {ex.InnerException.Message}");
}
}
并更改IIS授权。 将匿名身份验证设置为“禁用”,并将ASP.NET模拟设置为“启用”。