leo*_*ura 7 request-headers portable-class-library
我正在尝试将我对webservices的所有调用移动到我刚刚创建的可移植类库(PCL)来组织和重用我的代码.我的目标框架是.NET for Windows Store应用程序; .NET Framework 4.5; Silverlight 4及更高版本和WP7及更高版本.
在我的Win RT项目中,我一直在通过实现命名空间System.ServiceModel.Dispatcher中提供的IClientMessageInspector接口来设置消息头.但在我的PCL项目中,该接口以及System.ServiceModel.Description.IEndpointBehavior不可用.
因此,我需要了解如何将消息头/服务头附加到来自具有这些目标框架的PCL项目的服务调用.任何人都有我应该尝试的经验和/或建议吗?
只是为了添加更多信息,我现在尝试创建一个WP8项目,并注意到这些接口也不可用.所以IClientMessageInspector和IEndpointBehavior可能不适用于我的PCL项目,因为它的目标是WP8,它本身就错过了它们.
您应该能够将范围限制OperationContext为您想要使用的当前客户端渠道:
using(var scope = new OperationContextScope(_client.InnerChannel)){
//More to come
}
Run Code Online (Sandbox Code Playgroud)
现在您已经为客户端通道创建了操作上下文,您可以添加传出消息标头:
using(var scope = new OperationContextScope(_client.InnerChannel)){
var header = MessageHeader.CreateHeader("x-client-type", "http://www.myapp.com", "WP8");
OperationContext.Current.OutgoingMessageHeaders.Add(header);
//Send message to server
}
Run Code Online (Sandbox Code Playgroud)
之后,您应该能够IncomingMessageHeaders使用OperationContext.Current.
这些都是 WCF 服务的核心部分,因此它应该可用(希望如此)。
Mono 确实支持 WCF 服务,但您必须检查它们已实现的内容。EG:也许他们没有MessageHeader.Create,您必须使用var header = new MessageHeader<string>("x-client-type");和var untypedHeader = header.GetUntypedHeader("x-client-type", "http://www.myapp.com");来创建要添加的标头。
| 归档时间: |
|
| 查看次数: |
333 次 |
| 最近记录: |