在静态类中访问HttpContext.Current

Gre*_*g B 13 c# asp.net static

我可以HttpContext.Current在静态类和方法中调用吗?

我想在每个用户的基础上存储一个值,但希望能够以静态方式访问它.

这会有用吗?

public static class StaticClass
{

    public static string SomeThing
    {
        get { return HttpContext.Current.Items["SomeItem"].ToString(); }
    }

}
Run Code Online (Sandbox Code Playgroud)

Ant*_*nes 13

是的,这是一种有用的方式,当然,调用它的线程当前必须处理一个使其有用的请求.


Ant*_*lev 5

你为什么不试试?

是的,这是完全可能的(虽然不一定是一个好的设计),只记得引用System.Web.dll您的项目,并检查HttpContext.Currentnull的情况下,你会最终在non-ASP.NET环境中运行.


Jon*_*eet 5

是的,它是一种静态方法,因此您可以从任何地方调用它.正如安东尼所说,"当前"上下文取决于调用线程,因此您需要确保使用正确的线程.

  • 只要你没有做任何时髦的线程(例如在你的网页中使用线程池),它应该没问题. (2认同)