【问题标题】:How to get current windows username and disable the credentials prompting?如何获取当前的 Windows 用户名并禁用凭据提示?
【发布时间】:2013-11-18 14:24:18
【问题描述】:

我有一个 C#.NET 4.0 应用程序在带有 IIS7 服务器的 Windows Server 2008 上的 IIS 7 下运行。该应用程序将在公司 Intranet 中运行,该应用程序会自动获取查看该页面的人的登录 Windows 用户名,而不会在页面加载时提示输入凭据。现在我面临两个问题:

1) 目前,应用程序返回应用程序所在的生产服务器名称(例如:XYZ\sam)。我想获取当前登录的用户名(例如:ABC\sam)。它在本地主机上运行良好,但在生产服务器上却不行。

我在 web.config 中启用了<authentication mode="Windows" />,在 IIS 中启用了 Windows 身份验证并禁用了匿名身份验证。

我尝试了Page.User.Identity.NameSystem.Web.HttpContext.Current.User.Identity.NameSystem.Security.Principal.WindowsIdentity.GetCurrent().Name 等,但仍然未能获得正确的名称。如何获取当前windows登录用户?

2) 当我想访问应用程序时,它不断提示输入用户名和密码的窗口。如果我忽略它,它会提示出来

401 - 未经授权:由于凭据无效,访问被拒绝。你 无权查看此目录或页面,使用 您提供的凭据。

我将如何解决它?

【问题讨论】:

  • System.Net.CredentialCache.DefaultNetworkCredentials?
  • @Sudhakar 感谢您的回复。你能详细解释一下吗?

标签: c# asp.net windows iis


【解决方案1】:

对于您的2个问题,要自动登录,您必须在浏览器上进行设置,根据我的经验,我已经在IE中这样做了:https://superuser.com/questions/537416/how-to-make-internet-explorer-automatically-login-in-a-certain-domain

【讨论】:

  • 请通过将链接中的大量内容添加到您的答案中来帮助自己。链接到另一个站点以“找到答案”对于 SO 用户来说并不理想,并且会导致答案价值降低。
  • 感谢您的回复。我添加了类似dis的站点-“HTTP://xxx.xx.x.xx”,但它仍然提示出凭据窗口。
  • @GG90 ,试试这个:去IE互联网选项->安全选项卡->自定义级别->然后在设置的底部有“用户身份验证”,选择“授权使用当前用户登录...."
  • @GG90 您必须使用与您网站相同的凭据登录电脑。
【解决方案2】:

对于问题1,它无法检索登录的用户名,因为服务器是域服务器。从工作组转移到域后它可以工作。

对于问题 2,如果我使用服务器名称(例如:服务器名称/应用程序名称)访问,它可以正常工作(没有弹出凭据)。但如果我使用 ip(例如:xxx.xx.xx.x/appsname)并且没有设置工具互联网选项,它会要求提供凭据。因素仍然未知。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-06
    • 2011-05-15
    • 1970-01-01
    相关资源
    最近更新 更多