如何在全局asax中获取用户名?

时间:2010-06-29 13:40:14

标签: .net asp.net global-asax

我正在尝试检查用户是否属于数据库中某人的好友列表,并相应地重定向他。

我在Global Asax调用的路由器中执行此操作。

我只想知道如何在路由处理程序类(或全局asax)中获取用户名(来自登录信息)

我用过这个:

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

非常奇怪的是,它将“.aspx”指定为用户名!!

ps:我确实搜索过类似的问题但是徒劳无功。对不起,如果我彻底搜索它。

3 个答案:

答案 0 :(得分:4)

它应该有效...必须是您的身份验证方法中的内容。

你如何设置它?

看起来您自己正在进行身份验证并从错误的服务器变量中分配标识

答案 1 :(得分:3)

global.asax Session_Start在会话启动时被调用,也就是说,当浏览器访问您的站点时。浏览器用户此时通常没有登录,因此不会有任何HttpContext.Current.User.Identity.Name供您抓取。你应该得到一个空字符串。

如果用户已经过身份验证并且会话由于某种原因重新启动,例如,如果您退回服务器或会话超时短于您的身份验证超时,则会出现例外情况。但在一般情况下,序列必须是:

  1. 会话开始
  2. 用户登录并且HttpContext.Current.User.Identity.Name可用
  3. 所以你的问题的答案是:“在一般情况下,你不能”。

答案 2 :(得分:2)

检查您的web.config文件并查找该部分,并确保将身份验证模式设置为windows,如下所示:

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