ASP.NET WebApi:如何检查和创建每个请求上下文?

时间:2013-08-01 19:00:19

标签: c# wcf architecture asp.net-web-api unit-of-work

自托管的ASP.NET Web Api 中,我该怎么做:

  1. 从类中检测是否存在“环境”Web api上下文。这是为了避免在每个服务调用上传递元数据信息。我正在寻找相当于

    的东西

    System.Web.HttpRequest.Current != null

  2. 如何附加与当前请求关联的元数据信息。同样,这些元数据中的一些非常流行,将它们包含在每个方法和调用中都太痛苦了。想想交易,多租户架构和凭证。我需要一种方法来使这种信息在请求之间流动,而不会使代码混乱。

    换句话说,我还需要与here所解释的相同:

    HttpContext.Current.Items["user" + X.ToString()]

  3. 我想我仍然可以访问它们,只要WebApi托管在IIS上,但我有自己的托管,我需要一种方法来跟踪环境UoW信息 - 我该怎么办?

    一些注意事项:

    1. 我还考虑过根据请求使用DI并注入一个 请求上下文进入管理者,然而有大量的遗产 未设置的代码(其中一些是静态的)和我 做这样一个专业,没有勇气炸掉生产 重构。
    2. 我还使用了线程静态,静态变量 - 这样的问题是线程被回收,并且进程托管多个服务,其中一些甚至不是WebApi ...所以有时我的经理认为它正在处理WebApi请求,实际上它正在为WCF提供服务。

1 个答案:

答案 0 :(得分:1)

HttpRequestMessage实例具有属性字典,用于保存任意的每个请求上下文。