我正在使用消息合约模型生成WCF服务。
我创建了一个通用的请求消息合同,如下所示:
[MessageContract]
public Request<T>
{
[MessageBodyMember]
public T Details { get; set; }
}
我习惯使用[DataContract(Name="Contract{0}")]
为通用数据合同生成可读名称,但这种方法似乎对我使用消息契约不起作用。
有没有办法使用消息合约模型实现相同的行为?
答案 0 :(得分:4)
对于您想要完成的工作似乎有很多工作,但我相信您可以创建一个MessageInspector,它允许您直接与XML交互。
客户端消息检查器实现IClientMessageInspector
接口,服务消息检查器实现IDispatchMessageInspector
接口。
http://msdn.microsoft.com/en-us/library/aa717047.aspx
任何服务(调度程序)消息检查员都必须实施两个IDispatchMessageInspector
方法AfterReceiveRequest
和BeforeSendReply
。
链接更详细,但是一旦实现了这些链接,您应该能够将检查器添加到web.config中,并且应该全部设置。
答案 1 :(得分:2)
WrapperName
属性上有一个WrapperNamespace
和MessageContract
属性,我认为它也是一样的。如,
[MessageContract(WrapperName = "FooMessage", IsWrapped = true)]
public class Request<T>
{ ... }
注意添加IsWrapped
属性以指示消息应序列化到包装元素中。