MVC5 .NET应用程序并获取当前用户名

时间:2018-06-06 14:43:01

标签: c# asp.net asp.net-mvc asp.net-mvc-4

我有一个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;

但无济于事。

2 个答案:

答案 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;