静态方法里面的HttpContext.Current.Response

Rip*_*ppo 20 c# static-methods httpcontext

我在静态类中有以下静态方法.我的问题是在静态方法中使用HttpContext.Current.Response是否安全?我想100%确定它是线程安全的,并且只与调用线程相关联.有人知道答案吗?

    public static void SetCookie(string cookieName, string cookieVal, System.TimeSpan ts)
    {
        try
        {
            HttpCookie cookie = 
                new HttpCookie(CookiePrefix + cookieName) 
                    {Value = cookieVal, Expires = DateTime.Now.Add(ts)};
            HttpContext.Current.Response.Cookies.Add(cookie);
        }
        catch (Exception)
        {
            return;
        }
    }
Run Code Online (Sandbox Code Playgroud)

Ant*_*nes 33

是的,它非常安全.HttContext.Current将从正在执行的线程中获取当前的HttpContext.

它是一种常用技术,可以避免像"Tramp数据"那样传递上下文对象.


Yul*_*liy 13

HTTPContext.Current是静态的,所以你从静态方法调用它是无关紧要的.相关的是HTTPContext.Current以这样的方式实现,即它返回当前线程的 HTTP上下文(如果存在).


Meh*_*ari 6

目前还不清楚你的线程安全意味着什么.是,HttpContext.Current返回HttpContext与当前线程关联的对象.请注意,如果在除当前正在处理请求的线程之外的线程上调用该函数(例如,在异步函数调用中),您将无法访问所需的HttpContext对象.

另一种方法是将上下文对象作为参数传递给函数.