C# IIS vs.localhost Context.User.IsInRole()

C# IIS vs.localhost Context.User.IsInRole(),c#,asp.net,iis,windows-authentication,C#,Asp.net,Iis,Windows Authentication,使用我编写的代码来简化我的问题: <%@ Page Language="c#" %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML> <HEAD> <title>Am I me</title> <script language="c#" runat="server">

使用我编写的代码来简化我的问题:

<%@ Page Language="c#" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
    <HEAD>
        <title>Am I me</title>
        <script language="c#" runat="server">
        private void Page_Load(object sender, System.EventArgs e) {

            Label2.Text = "I am " + HttpContext.Current.User.Identity.Name;
            bool result = Context.User.IsInRole(HttpContext.Current.User.Identity.Name);
            Label1.Text = "Am I me? " + result;
            result = HttpContext.Current.User.IsInRole(HttpContext.Current.User.Identity.Name);
            Label1.Text += "                   Am I myself now? " + result;

        }
        </script>
    </HEAD>
    <body>
        <form id="Form1" runat="server">
            <div>       
                        <asp:Label ID="Label2" runat="server" Text="Label"></asp:Label>

            </div>
            <div>

                <asp:Label id="Label1" runat="server" Width="100%" Height="280px"></asp:Label>
           </div>
        </form>
    </body>
</HTML>
当我在本地运行此代码时,它工作正常:

但当我在IIS服务器上运行它时:

有人知道发生了什么事吗


我在内部网站上使用windows Authentication来澄清。两个用户的用户名也匹配。

您询问的是该用户是否在与该用户同名的Windows组中

从IsInRole的

确定当前主体是否属于Windows用户 使用指定的名称进行分组


我怀疑它在本地计算机上工作的原因是您碰巧有一个与您的用户同名的组,并且您的用户也是该组的成员。

您可能需要在web.config上进行一些调整,可能是cookie名称/domain@Aristos我没有在这页上使用任何cookies。web.config中可能影响它的部分?我使用相同的机器和用户名登录到这两个网站虽然。我的用户名(甚至是“本地”用户名)已附加到域,因此我所属的所有组都是相同的。是的,但一个站点似乎是visual studio托管进程,而另一个站点是IIS。比较这两个应用程序中的行为,特别是在安全性方面,Visual Studio宿主应用程序以当前用户的身份运行,而IIS以应用程序池中定义的用户的身份运行是不安全的。