我正在使用Visual Studio 2008并添加了指向WCF Web服务的Web引用。 Visual Studio自动生成了一个客户端类,因此调用Web服务所需要做的就是创建客户端实例并在其上调用方法。
FoodPreferenceServiceClient client = new FoodPreferenceServiceClient();
FoodPreferenceServiceResponse = client.GetFoodPreference();
FoodPreferenceServiceClient 是由VS自动生成的Web服务客户端。 GetFoodPreference 是我正在调用的Web服务上的方法。
我的问题是我想暴露上面调用中收到的实际HTTP头, 比如client.GetHttpResponse()或其他东西。
有办法做到这一点吗?
答案 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消息。