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

.net 如何在全局asax中获取用户名?,.net,asp.net,global-asax,.net,Asp.net,Global Asax,我试图从数据库中检查用户是否属于某人的好友列表,并相应地重定向他 我在一个叫GlobalAsax的routehandler里做这件事 我只想知道如何在路由处理程序类(或全局asax)中获取用户名(从登录信息) 我用了这个: string username = HttpContext.Current.User.Identity.Name; 非常奇怪的是,它将“.aspx”指定为用户名 ps:我确实在寻找类似的问题,但没有找到。对不起,如果我不能彻底搜查的话 它应该可以工作……必须是您的身份验

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

我在一个叫GlobalAsax的routehandler里做这件事

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

我用了这个:

string username = HttpContext.Current.User.Identity.Name;  
非常奇怪的是,它将“.aspx”指定为用户名


ps:我确实在寻找类似的问题,但没有找到。对不起,如果我不能彻底搜查的话

它应该可以工作……必须是您的身份验证方法中的某些内容

你是如何安装的


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

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

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

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

例外情况是,如果用户已通过身份验证,并且会话由于某种原因重新启动,例如,如果您跳转了服务器,或者会话超时时间短于您的身份验证超时时间。但在一般情况下,顺序必须为:

  • 会议开始
  • 用户登录,HttpContext.Current.user.Identity.Name变为可用

  • 因此,您的问题的答案是:“在一般情况下,您不能”。

    您使用什么身份验证方法?AFAIK用户由AuthenticationModule设置,其行为可能因您使用的身份验证方法而异。