无法在构建时将HttpRequestMessage.Properties["MS_RequestContext
本文关键字:quot MS RequestContext Properties 构建 HttpRequestMessage | 更新日期: 2023-09-27 18:01:55
我试图在WebApi的CompositionRoot中控制器激活期间手动更改我的MS_RequestContext
的属性。
我的Create方法收到一个System.Net.Http.HttpRequestMessage
参数。
我可以下钻请求来抓取
<>之前请求。属性("MS_RequestContext")之前Properties是一个dictionary<string,object>
对象,该对象在运行时将是一个OwinHttpRequestContext。
但是每当我尝试强制转换,以便我可以访问RequestContext上的属性时,我就会从Visual Studio
得到一个讨厌的gram。<>之前(请求。属性["MS_RequestContext"]作为OwinHttpRequestContext).Request.Properties;之前返回的错误是: <>之前类型或命名空间'OwinHttpRequestContext'找不到(你缺少using指令或程序集引用吗?)之前OwinHttpRequestContext位于System.Web.Http.Owin命名空间中。我的推荐信都准备好了。我甚至还添加了一个using语句。
所以疯狂的部分是,如果我回滚试图直接引用request.Properties
的代码,而是在我的Create方法中设置一个断点,我可以通过监视执行
没有问题。我可以通过即时窗口确认在运行时修改属性没有问题。
<>之前(请求。property ["MS_RequestContext"] as System.Web.Http.Owin.OwinHttpRequestContext).Request.Properties.Add("Foo","Bar")属性"Foo"将对我所有的MessageHandlers可用。
为什么我不能在构建时执行相同的强制转换?
OwinHttpRequestContext
不是一个公共类。这就是为什么你不能在代码中使用它,但调试器仍然可以看到它。