2011-07-18 305 views
0

我有一个使用Windows身份验证的ASP.Net应用程序,我指定了一个位于我的AD和我的本地开发框中的角色,看起来都很好。当我部署到我的测试Web服务器时,通过ASP LoginName控件显示的用户名显示的是服务器本地的身份,而不是我当前登录的域中的实际帐户,与我的本地PC一样。是什么赋予了?ASP.Net Windows身份验证 - 用户身份登录到服务器

UPDATE: 我使用Windows XP SP3与发展IIS服务器(IIS没有,即使已安装IIS)。我创建了一个新的测试网站(来自VWD2010 Express的空网页模板)。只有我做了配置,到目前为止是Default.aspx页面上,我说:

<asp:LoginName ID="LoginName1" runat="server" FormatString="Welcome {0}!" /><br /> 
<asp:Label ID="RoleLabel" runat="server"></asp:Label> 

然后在后面的代码,我补充说:

if (User.IsInRole("IPSCODOM\\SAFETY OBSERVATION")) 
{ 
    this.RoleLabel.Text = "You are in the SAFETY OBSERVATION role"; 
} 
else { 
    this.RoleLabel.Text = "You are NOT in the proper role!"; 
} 

现在,当我开始调试,屏幕显示如下:

这是我期待的输出。但是,当我将测试服务器(具有IIS 6.1的Server 2003 R2)部署到站点(再次没有其他配置)时,结果会非常不同。用户返回的是我们用来登录到该服务器的用户(但是是一个域帐户)。应用程序池设置为使用网络服务帐户(我已尝试全部三种,系统,本地服务和网络服务)登录,万维网发布服务正在使用本地系统帐户登录。我禁用了网站上的匿名访问,当我浏览到网站时,它又显示与我登录的用户帐户不同的用户帐户。

我在做什么错?

+0

如果这出现在浏览器上,或许浏览器自动完成选项认为您正在浏览该服务器上的另一个Web应用程序? –

+0

naah,看看我下面的评论,现在我试图在本地机器上使用IIS 7.5 Express,并且User对象没有配置文件。不知道我在这里做错了什么......认为这很简单。 – Keith

+0

好的,所以我在当前的设置中添加了更多细节。检查上面的更新... – Keith

回答

0

实际的问题是,当我需要将一些文件部署到测试服务器,并且我无法访问驱动器的根目录时。当我浏览根目录时,会出现登录对话框,并以登录网页时显示的用户身份登录。我忘了我做了这件事,现在我觉得自己像个白痴。请原谅我的无知,但请记住这个问题,以防其他人脑部放屁。

要取消登录顺序,我进入了控制面板>>用户帐户>>高级>>管理密码,并删除了我正在浏览的服务器的凭据。然后,它正确地拿起我的用户帐户。

+0

我没有在这个盒子外面考虑驱动器的根目录,%WINDIR%下的任何东西(在大多数机器上是C:\ Windows)和其他几个目录对IIS来说都是粗暴的(除非你破解安全性,这不是一个好主意)。谢谢你的跟进。 –

0

什么是“本地服务器”身份。在不了解设置的情况下,我会首先检查您是否已将服务器上的IIS实例设置为使用Windows身份验证,因为这不是默认设置。如果修复失败,那么请确保您没有热接入IIS中的服务以使用特定的帐户。

+0

好的,所以现在我已经在Windows XP上设置了IIS 7.5 Express,并将应用程序设置为使用它运行。我在我的web.config中有以下代码,它告诉我它没有被授权,所以我在页面加载时检查了User对象,并且用户对象具有空白属性,但对象不为空。 Keith