C# 如何在IIS7+;
我在远程IIS7+服务器上部署了一个asp.net 4.5 web forms web应用程序,我想获取用户的域\用户名以填充数据库列 My web.config具有以下功能:C# 如何在IIS7+;,c#,asp.net,iis-7,C#,Asp.net,Iis 7,我在远程IIS7+服务器上部署了一个asp.net 4.5 web forms web应用程序,我想获取用户的域\用户名以填充数据库列 My web.config具有以下功能: <system.web> <authentication mode="Windows" /> <identity impersonate="true" /> <!-- I have tried with and without impersonate-->
<system.web>
<authentication mode="Windows" />
<identity impersonate="true" /> <!-- I have tried with and without impersonate-->
<authorization>
<deny users="?"/>
</authorization>
...other stuff
</system.web>
<system.webServer>
<security>
<authentication>
<anonymousAuthentication enabled="false" />
<windowsAuthentication enabled="true" />
</authentication>
</security>
<modules>
<remove name="FormsAuthentication" />
</modules>
其他需要注意的事项:
已在服务器上为我的web应用启用Windows身份验证
我一直得到服务器名而不是用户名
此外,我的web应用程序没有登录。用户对服务器的访问受到限制,但如果他们可以访问服务器,则他们将自动访问我的web应用程序
[更新]
有趣的突破,如果我做内联
<% Response.Write(HttpContext.Current.User.Identity.Name.ToString()); %>
见:
要获取asp.net aspx页面的当前用户名,请使用
System.Security.Principal.WindowsIdentity.GetCurrent().Name
要获取实际登录的用户,请使用以下任一选项:
HttpContext.Current.User.Identity.Name
Page.User (wraps HttpContext.Current.User.Identity.Name)
Request.ServerVariables("logon_user")
您可能还需要:
impersonate=true
在web.config文件中
这篇文章也可以帮助你:
[编辑]这篇文章展示了IIS 7的封面下发生的事情:
这篇文章也希望能让你了解尝试和错误的结果意味着什么:
您的web.config中可能还需要以下内容
<authorization>
<deny users = "?" /><!-- This denies access to the Anonymous user -->
<allow users ="*" /><!-- This allows access to all users -->
</authorization>
在IIS的处理管道应用程序生命周期的早期,即在进行身份验证之前,您称之为“服务器端”。
Response.Write(
是应用程序生命周期的最后一个方面。请查看Microsoft的IIS7生命周期文档:
System.Security.Principal.WindowsIdentity.GetCurrent().Name
要获取实际登录的用户,请使用以下任一选项:
HttpContext.Current.User.Identity.Name
Page.User (wraps HttpContext.Current.User.Identity.Name)
Request.ServerVariables("logon_user")
您可能还需要:
impersonate=true
在web.config文件中
这篇文章也可以帮助你:
[编辑]这篇文章展示了IIS 7的封面下发生的事情:
这篇文章也希望能让你了解尝试和错误的结果意味着什么:
您的web.config中可能还需要以下内容
<authorization>
<deny users = "?" /><!-- This denies access to the Anonymous user -->
<allow users ="*" /><!-- This allows access to all users -->
</authorization>
在IIS的处理管道应用程序生命周期的早期,即在进行身份验证之前,您称之为“服务器端”。
Response.Write(
是应用程序生命周期的最后一个方面。请查看Microsoft的IIS7生命周期文档:
只有在这之后,才能真正安全地进行所需的处理到目前为止,这些都没有起作用。它们都返回管理员用户名。我正在与box管理员进行双重检查,以确保服务器上的匿名访问被禁用,但我非常确定它是禁用的。还有其他想法吗?你有没有试着按照顶部链接中的解决方案:也就是说,我试过了,但没有用。另外,我真的不明白链接中的答案如何。。。windows标识。根据您所描述的,IIS仍然向用户提供匿名访问,而不是强制请求通过windows标识公告中列出的身份验证代码。在调查您的问题时,我的下一步将是将web.config剥离到其基本部分,然后看看会发生什么。如果还有问题的话,我会想看看菲德勒是否能透露更多的信息。然后可能会查看IIS的日志和/或附加调试器w3wp.exe以查看IIS正在执行的操作。只是想让您知道,我的问题是在我实际更新数据库的地方进行了4次方法调用。当我第一次尝试这样做时,我把Environment.UserName;在那里,每次我回去检查更新方法时都会错过它。。。然而,多亏了你的文章,我对页面生命周期有了很多了解,所以我非常感谢你的帮助。到目前为止,这些都没有起作用。它们都返回管理员用户名。我正在与box管理员进行双重检查,以确保服务器上的匿名访问被禁用,但我非常确定它是禁用的。还有其他想法吗?你有没有试着按照顶部链接中的解决方案:也就是说,我试过了,但没有用。另外,我真的不明白链接中的答案如何。。。windows标识。根据您所描述的,IIS仍然向用户提供匿名访问,而不是强制请求通过windows标识公告中列出的身份验证代码。在调查您的问题时,我的下一步将是将web.config剥离到其基本部分,然后看看会发生什么。如果还有问题的话,我会想看看菲德勒是否能透露更多的信息。然后可能会查看IIS的日志和/或附加调试器w3wp.exe以查看IIS正在执行的操作。只是想让您知道,我的问题是在我实际更新数据库的地方进行了4次方法调用。当我第一次尝试这样做时,我把Environment.UserName;在那里,每次我回去检查更新方法时都会错过它。。。不过,多亏了你的文章,我对页面生命周期有了很多了解,所以我非常感谢你的帮助。