2010-06-29 99 views
2

我試圖檢查用戶是否屬於某人的數據庫中的朋友列表,並相應地重定向他。如何在全球asax中獲取用戶名?

我在一個由Global Asax調用的路由處理程序中執行此操作。

我只是想知道如何得到的路由處理類我用這個用戶名(從登錄信息)(或全球ASAX)

string username = HttpContext.Current.User.Identity.Name; 

而且很奇怪的是,它的分配「.aspx」作爲用戶名!

ps:我沒有搜索類似的問題,但徒勞無功。對不起,如果我徹底搜索它。

+0

你使用什麼驗證方法? AFAIK用戶由AuthenticationModule設置,並且行爲可能因您使用的身份驗證方法而異。 – 2010-06-29 13:48:44

回答

4

它應該工作...必須是您的身份驗證方法。

你是如何設置的?

它看起來像你自己做了認證,並從錯誤的服務器變量分配身份

2

檢查你的web.config文件並尋找部分,並確保身份驗證模式設置爲Windows,這樣:

<authentication mode="Windows"></authentication> 
3

global.asax Session_Start在會話開始時調用,也就是說,當瀏覽器擊中您的網站時。瀏覽器用戶一般沒有登錄,所以不會有任何HttpContext.Current.User.Identity.Name讓你抓取。你應該得到一個空字符串。

如果用戶已經通過身份驗證並且會話由於某種原因重新啓動(例如,如果您退回服務器或會話超時比身份驗證超時短),則會出現異常。但在一般情況下,順序必須是:

  1. 會議開始
  2. 用戶登錄並HttpContext.Current.User.Identity.Name可用

所以回答你的問題是:「在一般情況下,你不能」。