我有一个MVC5网络应用程序,我利用以下内容获取当前用户信息。我在IIS上启用了Windows登录。
private readonly string _userName = UserPrincipal.Current.DisplayName;
item.CreatedBy = _userName;
这在我的开发计算机上运行应用程序时有效,但是当我发布到IIS时,它会抛出异常:
在 (及(objectCategory =用户)(objectClass的=用户)(|(=的UserPrincipalName)(的distinguishedName =)(名称=))) 搜索过滤器无效。
如何让它在IIS服务器上正常工作以正确获取用户信息?
BTW - 我也试过这个:private readonly PrincipalContext ctx = new PrincipalContext(ContextType.Domain);
var user = UserPrincipal.FindByIdentity(ctx, User.Identity.Name);
item.CreatedBy = user.DisplayName;
但无济于事。
答案 0 :(得分:0)
这可能是您所说的“我已启用IIS上的Web应用程序的Windows登录”,但确认您已在IIS上启用了Windows身份验证。在“无用”案例中出现问题的详细信息也可能有所帮助。
答案 1 :(得分:0)
看起来IIS中的默认网站上仍然启用了匿名身份验证。我禁用了,现在它可以使用以下代码:
private readonly PrincipalContext ctx = new PrincipalContext(ContextType.Domain);
var user = UserPrincipal.FindByIdentity(ctx, User.Identity.Name);
item.CreatedBy = user.DisplayName;