asp.net Web 应用程序返回 IIS 信息而不是当前用户凭据

Posted

技术标签:

【中文标题】asp.net Web 应用程序返回 IIS 信息而不是当前用户凭据【英文标题】:asp.net web app returning IIS info instead of current user credentials 【发布时间】:2013-02-13 16:33:49 【问题描述】:

我正在使用自定义身份验证的 asp.net Web 应用程序。我编写了一个快速测试应用程序来发布在我们的网络服务器上,以确保我可以从用户那里获取必要的凭据。我正在尝试使用以下代码行获取当前登录的用户(我以前做过):

   string username=System.Security.Principal.WindowsIdentity.GetCurrent().Name.ToString();

这通常返回格式为“域\用户”的字符串。我得到的是这样的:IIS APPPOOL\ASP.NET v4.0

我确定我遗漏了一些简单的东西,IIS 中是否有需要更改的设置?还是有其他方法来获取用户名?

【问题讨论】:

您的 web.config 中有模拟设置吗? @Dillie-O 我目前没有设置模拟。我认为应该禁用它,因为 asp 应用程序将处理身份验证。我确实尝试启用它,并且 NT AUTHORITY\IUSR 已返回给我。 由于您使用的是自定义身份验证,您是否有适当的代码来设置 IPrincipal 详细信息?没有它,我相信 Security.Principal 类默认为你所拥有的 @Dillie-O 看来这就是我的问题所在!我忘记了在我的测试中为此编码。谢谢! 不是问题。我会设置并回答,以便其他人可能会发现它有帮助 【参考方案1】:

由于您使用的是自定义/表单身份验证,因此听起来您在用户通过身份验证后没有设置 IPrinicipal 详细信息。

您可以follow this documentation(查找“创建表单身份验证 Cookie”部分)了解如何在您的应用中设置此代码。这并不像看起来那么难。

【讨论】:

【参考方案2】:

试试这个:

Page.User.Identity.Name

【讨论】:

以上是关于asp.net Web 应用程序返回 IIS 信息而不是当前用户凭据的主要内容,如果未能解决你的问题,请参考以下文章

部署在 IIS 上的 ASP.NET Core 对长时间运行的请求返回 502 错误

ASP.NET Core RC2 IIS 在选项请求上返回 502

ASP.NET Web Api HttpResponseException 400 (Bad Request) 被 IIS 劫持

asp.net http 400 错误的请求怎么解决

asp.net怎么配置IIS6

没有 ASP.NET/IIS 的 .NET Web 服务?