当前位置: 首页 > 编程语言 > C#

ASP.NETWebAPI-请求特定的全局变量分享

时间:2023-04-10 12:55:09 C#

ASP.NETWebAPI-请求特定的全局变量当我收到一个WebAPI请求时,我想创建一个变量,在请求的生命周期中,每个类都可以访问这个变量。我希望它作为任何类的App.User之类的静态属性进行访问。但是我不想在处理完请求后保留它,所以我想SessionState不是一个选项。这样做的正确方法是什么?编辑:它还需要是线程安全的。正如Igor指出的那样,一种选择是使用依赖项注入和参数传递来使您的“全局”变量可供所有需要它的人访问。但是如果你真的想使用静态属性,那么你可以使用HttpContext.Items属性来存储与当前请求相关的临时数据:publicclassApp{publicstaticIUserUser{get{return(IUser)HttpContext.Current.Items[“用户”];}设置{HttpContext.Current.Items["用户"]=值;第三种选择(我不推荐)是使用由ThreadStatic属性支持的静态字段:publicclassApp{[ThreadStatic]privatestaticIUseruser;publicstaticIUserUser{get{返回用户;}设置{用户=值;}}}此选项的优点是它不依赖于System.Web。但是,它仅在您的控制器是同步的时才有效,如果您使用异步,它就会中断。HttpContext.Items专门用于此目的。你放在那里的任何东西都会在当前请求的生命周期内存在,然后被拆除。以上就是《ASP.NETWebAPI——请求特定全局变量》C#学习教程的全部内容。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: