代码之家  ›  专栏  ›  技术社区  ›  Rippo

静态方法内的httpContext.current.response

  •  20
  • Rippo  · 技术社区  · 16 年前

    我在一个静态类中有以下静态方法。我的问题是在静态方法中使用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;
            }
        }
    
    3 回复  |  直到 7 年前
        1
  •  33
  •   AnthonyWJones    16 年前

    是的,很安全。当前的httcontext.current将从正在执行的线程获取当前的httpContext。

    这是一种常见的技术,可以避免像“不定期数据”那样传递上下文对象。

        2
  •  12
  •   Yuliy    16 年前

    current是静态的,所以从静态方法调用它是不相关的。相关的是httpContext.current的实现方式是返回 当前线程 HTTP上下文(如果存在)。

        3
  •  6
  •   Mehrdad Afshari    16 年前

    不清楚线程安全到底是什么意思。对, HttpContext.Current 返回 HttpContext 与当前线程关联的对象。请注意,如果在线程上调用函数,但当前正在处理请求的线程除外(例如,在异步函数调用中),则无法访问 请求上下文 你想要的对象。

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

    推荐文章