如何在C#中公开WCF Web服务调用响应头

时间:2011-07-12 11:43:35

标签: c# wcf web-services

我正在使用Visual Studio 2008并添加了指向WCF Web服务的Web引用。 Visual Studio自动生成了一个客户端类,因此调用Web服务所需要做的就是创建客户端实例并在其上调用方法。

FoodPreferenceServiceClient client = new FoodPreferenceServiceClient(); 
FoodPreferenceServiceResponse = client.GetFoodPreference();

FoodPreferenceServiceClient 是由VS自动生成的Web服务客户端。 GetFoodPreference 是我正在调用的Web服务上的方法。

我的问题是我想暴露上面调用中收到的实际HTTP头, 比如client.GetHttpResponse()或其他东西。

有办法做到这一点吗?

2 个答案:

答案 0 :(得分:2)

是的,应该是可能的。尝试:

using (var scope = new OperationContextScope())
{
    var client = new FoodPreferenceServiceClient(); 
    response = client.GetFoodPreference();

    var httpProperties = (HttpResponseMessageProperty)OperationContext.Current
                             .IncomingMessageProperties[HttpResponseMessageProperty.Name];

    var headers = httpProperties.Headers;
    // Now you should be able to work with WebHeaderCollection and find the header you need
}

答案 1 :(得分:0)

您无法直接在客户端通过OeprationContext获取邮件头,但您可以开发自定义IClientMessageInspector,并在界面中获取SOAP XML消息。