2011-08-30 91 views
1

System.Web.HttpContext.Current.User.Identity.Name返回「null」。HttpContext.Current.User.Identity.Name返回null

我絕對登錄了。

這怎麼解決?

protected override void OnActionExecuting(ActionExecutingContext filterContext) 
{ 
    base.OnActionExecuting(filterContext); 

    if (Session["FirstName"] == null) 
    { 
     string loginName = System.Web.HttpContext.Current.User.Identity.Name; 
     string networkId = loginName.Split('\\')[1]; 
     Session["FirstName"] = new AD_Utility().FirstName(networkId); 
    } 
    ViewBag.FirstName = Session["FirstName"]; 
} 
+1

試着看看這個其他問題[HttpContext.Current.User.Identity.Name總是string.Empty](http://stackoverflow.com/questions/1056487/httpcontext-current-user-identity-name- is-always-string-empty) –

回答

3

您在web.config中配置了什麼樣的身份驗證?另外,你是使用IIS還是開發Web服務器?您可能需要在IIS或web.config中啓用表單身份驗證或Windows身份驗證。

希望這會有所幫助。

編輯: -

請參考上面保存的鏈接。它有一個使用ASP.NET MVC中的表單身份驗證的體面的例子。我有一段時間沒有玩過ASP.NET MVC,但我認爲你的問題在於你的用戶通過身份驗證後,HttpContext.Current.User從未被填充過。請確保您在身份驗證功能中使用了FormsAuthentication.SetAuthCookie和FormsAuthentication.RedirectFromLoginPage。

另外,從您上面的問題來看,您似乎可能會將AD用作您的安全商店。您可能想要考慮使用Windows身份驗證,因爲它應該自動填充HTTPContext.Current.User。

+1

身份驗證模式=「形式」 – Susan