System.Security.Principal.WindowsIdentity.GetCurrent()。Name是Works

时间:2009-05-04 13:05:06

标签: asp.net-membership

我正在使用System.Security.Principal.WindowsIdentity.GetCurrent().Name(在我的web.config中使用Windows身份验证)来获取客户端用户名。

我的问题是,当我将页面放到Intranet上时,此代码是否有效,因为我需要在会话中存储用户名以供以后使用。

我是否可以使用此代码获取用户用于登录我页面的用户名?

void Authenticate()
{
    string strLogin = null;

    try
    {
        strLogin = System.Security.Principal.WindowsIdentity.GetCurrent().Name;
        Session.Add("Login", strLogin);
        //Label1.Text = strLogin;
        //Label2.Text = System.Environment.UserName;
    }
    catch (Exception ex)
    {
        Response.Write(strLogin);
        Response.Write("<br/>handled:" + ex.Message.ToString());
        Response.End();
    }
    finally
    {
        GC.Collect();
    }
}

3 个答案:

答案 0 :(得分:4)

您需要将应用程序配置为通过在Web.Config中的身份验证元素之后添加以下元素来模拟正在访问它的Windows用户:

<identity impersonate="true"/>

如果未将impersonate设置为true,则工作进程将作为网络服务或ASPNET帐户运行,具体取决于您的IIS版本。

答案 1 :(得分:1)

是。它也适用于Page.User.Identity.Name

答案 2 :(得分:0)

如果您的用户登录您的网站,您可以使用Page.User.Identity.Name获取当前用户的名称。