2014-11-05 47 views
0

我需要将每个保存请求/用户的当前用户名存储在SQL表中。它是基于MVC 4的应用程序并托管在IIS服务器中。此外,它是一个内部工具和基于NTLM的身份验证。全局变量如何在MVC 4中起作用?

我已经得到当前用户的用户名使用HttpContext.Current.User.Identity.Name我的问题是全局变量如何反应在MVC?当多个请求到来时,“currentUser”变量会发生什么?当前用户是否会为每个请求创建新值?请帮我理解。

示例代码:

public class ClearCacheController : ApiController 
{ 

    private string currentUser = HttpContext.Current.User.Identity.Name.ToLower(); 

    public void method1() 
    { 
     SaveValue1(currentUser); 
    } 
    public void method2() 
    { 
     SaveValue2(currentUser); 
    } 
    public void method3() 
    { 
     SaveValue3(currentUser); 
    } 
} 

回答

2

控制器被实例化,并设置为每个唯一的请求。所以,像User.Identity.Name这样的东西并不是一个真正的全局变量。它是控制器上的一个实例变量。 (嗯,User是控制器上的一个实例变量,而IdentityUser等的实例变量)。总而言之,它只会保持执行特定请求的用户的价值,而不是任何用户提出任何请求。

+0

晶莹剔透!!!谢谢。 – Uba 2014-11-05 19:32:52