我有一个 C#.NET 4.0 应用程序在带有 IIS7 服务器的 Windows Server 2008 上的 IIS 7 下运行。该应用程序将在公司内部网中运行,它会自动获取查看页面的用户的登录 Windows 用户名,而不会在页面加载时提示输入凭据。现在我面临两个问题:
1) 目前,应用程序返回应用程序所在的生产服务器名称(例如:XYZ\sam)。我想获取当前登录的用户名(例如:ABC\sam)。它在本地主机上运行良好,但在生产服务器上运行不正常。
我已经启用了 <authentication mode="Windows" />
在 web.config 中,启用 Windows 身份验证并在 IIS 中禁用匿名身份验证。
我试过了 Page.User.Identity.Name
, System.Web.HttpContext.Current.User.Identity.Name
, System.Security.Principal.WindowsIdentity.GetCurrent().Name
, 和其他人但仍未能获得正确的名称。如何获取当前windows登录用户?
2) 当我想访问该应用程序时,它不断提示输入用户名和密码的窗口。如果我忽略它,它会提示出来
401 - Unauthorized: Access is denied due to invalid credentials. You do not have permission to view this directory or page using the credentials that you supplied.
我该如何解决?
最佳答案
对于问题1,它无法检索到登录用户名,因为服务器是域服务器。它在从工作组转移到域后工作。
对于问题 2,如果我使用服务器名称(例如:servername/appsname)访问,它工作正常(没有弹出凭据)。但如果我使用 ip(例如:xxx.xx.xx.x/appsname)并且没有设置工具 internet 选项,它会要求提供凭据。因素仍然未知。
关于c# - 如何获取当前的 Windows 用户名并禁用凭据提示?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19827500/