我有以下代码:
protected void Session_Start(object sender, EventArgs e)
{
WindowsPrincipal p = Thread.CurrentPrincipal as WindowsPrincipal;
string sUserAccount = HttpContext.Current.User.Identity.Name.ToString();
HttpContext.Current.Session["WinAccount"] = sUserAccount;
}
代码是获取Windows用户名。从session_start
开始,我想创建一个名为WinAccount
的会话。但是,当我尝试从我的一个页面(default.aspx)调用会话时,该会话上有master page
。
请说,在page_load上:
string sWinAccount = Session["WinAccount"].ToString();
Label1.Text = sWinAccount.ToString();
web.config
看起来像:
<authentication mode="Windows"/>
<identity impersonate="false"/>
<authorization>
<deny users="?"/>
</authorization>
此外,项目的属性已启用Windows身份验证模式。
当我跑步时,它会空白。 请指教。
谢谢。
答案 0 :(得分:3)
答案 1 :(得分:1)
试
string sUserAccount =System.Security.Principal.WindowsIdentity.GetCurrent().Name.Tostring();
答案 2 :(得分:0)
当新客户端首次向应用程序发出请求时,会触发Session_Start事件,而不是在用户登录时触发。因此,在您的情况下,调用Session_Start时HttpContext.Current.User.Identity.Name
为空。它按预期工作。