CSharp - web服务请求中的C# 共享信息

  显示原文与译文双语对照的内容

我们有一个解决方案,使用WCF客户端消息检查器从一个http标头读取相关 of ( 和其他值) 。

然后我们将这个值存储在 System.ServiceModel.OperationContext.Current.IncomingMessageProperties 。

OperationContext.Current 是当前线程的执行上下文。

但是,根据Jon的回答,这个问题是: 将在IIS上运行单个线程的请求? ASP.NET 请求将在线程之间跳转。

这正是我们所遇到的,关联of在请求执行过程中发生了变化。

在哪里可以存储http请求中的值,以便它们可以在堆栈中下降。

时间: 原作者:

我已经用了 System.Web.HttpContext.Current.Items 集合来存储我们在MessageInspector中选取的值,例如


 public void AfterReceiveReply(ref Message reply, object correlationState)


 {


 var httpResponse =


 reply.Properties[HttpResponseMessageProperty.Name] 


 as HttpResponseMessageProperty;



 if (httpResponse!= null)


 {


 string cookie = httpResponse.Headers[HttpResponseHeader.SetCookie];



 if (!string.IsNullOrEmpty(cookie))


 {


 System.Web.HttpContext.Current.Items.Add("MyCookies", cookie);


 }


 }


 }



堆栈中的其他地方可以使用相同的键从项集合中提取值。

请查看 Scott Hanselman的这篇文章,了解更多详情。

原作者:

这对我有用


 var headers =OperationContext.Current.IncomingMessageProperties["httpRequest"];


 var apiToken = ((HttpRequestMessageProperty)headers).Headers["apiKey"];



原作者:
...