ASP.NET Web API - 请求特定的全局变量[关闭]

2024-03-19

当我收到 Web API 请求时,我想创建一个变量,在请求的生命周期中每个类都可以访问该变量。我希望它像静态属性一样被访问,方式如下App.User来自任何班级。但我不希望在处理请求后保留它,所以我想 SessionState 不是一个选项。执行此操作的正确方法是什么?

编辑: 它也需要是线程安全的。


As Igor https://stackoverflow.com/users/1260204/igor请注意,一种选择是使用依赖项注入和参数传递来使“全局”变量可供所有需要它的对象访问。

但如果你真的想使用静态属性,那么你可以使用HttpContext.Items https://msdn.microsoft.com/en-us/library/system.web.httpcontext.items(v=vs.110).aspx属性来存储仅与当前请求相关的临时数据:

public class App
{
    public static IUser User
    {
        get { return (IUser)HttpContext.Current.Items["User"]; }
        set { HttpContext.Current.Items["User"] = value; }
    }
}

第三种选择(我don't建议)是使用由线程静态 https://msdn.microsoft.com/en-us/library/system.threadstaticattribute(v=vs.110).aspx属性:

public class App
{
    [ThreadStatic]
    private static IUser user;

    public static IUser User
    {
        get { return user; }
        set { user = value; }
    }
}

此选项的优点是它不依赖于 System.Web。然而,它是only如果你的控制器是同步的,则有效,如果你使用过,它就会中断async.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ASP.NET Web API - 请求特定的全局变量[关闭] 的相关文章

随机推荐

  • GPS 位置未正确检索

    我是 Android 开发新手 我了解 Android 活动生命周期 请看下面的代码 public class MyTest extends Activity Override public void onCreate Bundle sav
  • *.suo 文件中实际包含什么?

    我读过有关解决方案用户选项文件的 MSDN 文章 https msdn microsoft com en us library bb165909 aspx 解决方案用户选项文件用于存储用户首选项设置 并在 Visual Studio 保存解
  • 对具有相似名称的多组列使用相同的 mutate

    想象一下以下数据 data lt tribble a1 a2 b1 b2 c1 c2 32 32 50 12 12 50 48 20 55 43 10 42 对于 i 1 2 我想计算deltai ai ci ai bi ci ai 我明确
  • TCP/IP 套接字是原子的吗?

    据我了解 如果写入的数据量很小 则对 TCP IP 套接字的写入将是原子的 我所说的原子性是指接收者将接收所有数据或不接收任何数据 但是 如果写入的数据量很大 则它不是原子的 我对么 如果是的话 什么算大呢 谢谢 鲍勃 不 TCP 是一种字
  • Executor 和 ExecutorService 有什么区别? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我想知道 Executor 和 Ex
  • 在 BlackBerry 中单击事件期间更改 ButtonField 背景

    在 BlackBerry 中 如何更改ButtonField点击事件期间的背景颜色 例如 对于长按 背景颜色需要改变 对我来说 它采用默认颜色蓝色 如何改变呢 这是我们的自定义按钮字段 但它显示按钮单击事件的默认蓝色 public clas
  • 高效地从TextureView获取Bitmap

    我试图从一个TextureView 不幸的是尝试 textureView getBitmap 导致性能缓慢是否有更快的方法来获取位图 使用 NDK 是否更好 寻找实际例子 TextureView 接收 SurfaceTexture 上的帧
  • 当前对控制器类型 {1} 上的操作 {0} 的请求不明确

    我有两个动作 我想要我的路线 users and users id 与众不同 然而它给我带来了错误 是否可以在不手动创建的情况下实现这种事情every路线 我将有其他控制器将遵循类似的模式 并为所有这些控制器编写自定义路线 一般来说似乎是多
  • 请求网站时,Javascript 用户代理 (ajax) 与发送的用户代理不同

    我注意到我的手机 OnePlus 3 Android 8 0 0 上的 Chrome 64 0 3282 137 在请求网页时发送的用户代理与通过 ajax 发送的请求略有不同 该用户代理在请求网页时发送 Mozilla 5 0 Linux
  • 将字符串转换为 React JSX

    Goal 我想将包括 React 组件的字符串转换为功能齐全的 JSX 更简单的例子是这样的 Stack Overflow 上有很多解决方案 render let txt span b Hello World b span return d
  • 如何检查输入值是否在数组中(Powershell)

    InputArray a e i o u 1 2 3 4 5 UserInput Enter any value 我们如何检查 UserInput is in InputArray或不提示输入正确 Use the contains操作员 I
  • 在 r 中创建一个基于其他列自动递增的列

    我的数据框有客户 ID 产品和日期 我需要创建一个列 每次 customerID 或日期更改时都会生成交易 ID 我的数据框目前看起来像 客户 ID 产品 日期 23 abv 12 12 14 23 政府飞行服务处 12 12 14 18
  • 如何使用 Firebase Cloud Messaging 将推送通知发送到多个设备

    我正在寻找一种将推送消息从我的 Express JS 服务器传递到我的离子应用程序的方法 我发现GCM 使用 GCM 我可以传递传递令牌列表的消息 如下所示 sender send message registrationTokens de
  • AddressSanitizer 中的“影子字节”是什么?我应该如何解释它们?

    我正在调试 C 程序并且严重困惑当发现问题时 大约是 AddressSanitizer 输出的下半部分 让我们以此为例 33184 ERROR AddressSanitizer heap buffer overflow on address
  • JavaScript 异步编程新手。有什么建议吗?

    异步回调很棒 但是当一个回调依赖于另一个回调的结果时 我会使用具有回调的 api 调用进行回调 等等 apiCall function apiCall function apiCall function 我可以命名回调函数 而不是将它们内联
  • 如何在 IntelliJ 14 中从临时文件运行代码?

    我创建了一个简单的 Java 临时文件 其中包含一个名为 测试泛型 包含一些代码和main方法 代码似乎没问题 但是当我尝试运行它时 通过右键单击 gt 运行 TestGenerics main 我收到此错误 未指定模块 包含 Lua 代码
  • C# 客户端连接到 kerberos kdc

    我正在为连接到 kerberos kdc 的客户端寻找一些示例 C 代码 None
  • 如何在Python中从掩模分割图像创建轮廓(具有可控的厚度)?

    这里我有一个分割模型的分割输出图像 我想为这些蒙版创建一个轮廓 然后将该轮廓放在原始图像上 以将图像上的预测区域指示为分割输出 我尝试使用 PIL 过滤器 FIND EDGES 但它为轮廓提供了非常薄的边缘 有什么方法可以将此蒙版图像转换为
  • 旋转变换后更改 uiview 大小

    我的代码需要专业 xcoder 的帮助 我有一个名为 headline 的可拖动 uitextview 它是 mainstage 中的子视图 我还添加了捏合手势来更改 uitextview 内的字体大小 一切工作正常 但我真正需要的最后一个
  • ASP.NET Web API - 请求特定的全局变量[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 当我收到 Web API 请求时 我想创建一个变量 在请求的生命周期中每个类都可以访问该变量 我希望它像静态属性一样被访问 方式如下A