我想运行一些使用User.Identity.Name,
的代码我想在用户首次进入网站时运行该代码。 (可以每次关闭浏览器然后重新打开网站)
我尝试将它放在global.asax的Application_Start中,但User.Identity.Name名称返回null;
我怎样才能做到这一点?
答案 0 :(得分:7)
根据您的描述,您可能希望将代码放在Session_Start中,而不是Application_Start。 Session_Start是应用程序第一次看到每个用户时触发的事件。
以下是Global.asax中可用的事件列表:http://msdn.microsoft.com/en-us/library/system.web.httpapplication_events%28v=VS.100%29.aspx
答案 1 :(得分:6)
User.Identity.Name
才会为null。如果您使用Forms Authentication
,则在致电FormsAuthentication.SetAuthCookie
时会发生这种情况。如果您使用的是集成Windows身份验证,则通常会在用户首次请求站点时自动对其进行身份验证。通常,您不应尝试在Application_Start
中访问它。您可以编写自定义授权Application_AuthenticateRequest
方法,该方法在安全模块建立用户身份时触发。