我正在使用消息契约模型生成一个WCF服务。
我已经创建了一个通用的请求消息协定,如下所示:
[MessageContract]
public Request<T>
{
[MessageBodyMember]
public T Details { get; set; }
}
我习惯于使用[DataContract(Name="Contract{0}")]
为通用数据约定生成易读的名称,但这种方法似乎对我使用消息约定不起作用。
有没有一种方法可以使用消息契约模型实现相同的行为?
发布于 2012-11-02 04:41:14
要完成您想要完成的任务,似乎需要做很多工作,但我相信您可以创建一个MessageInspector,它将允许您直接与XML进行交互。
客户端消息检查器实现IClientMessageInspector
接口,服务消息检查器实现IDispatchMessageInspector
接口。
http://msdn.microsoft.com/en-us/library/aa717047.aspx
任何服务(分派器)消息检查器都必须实现两个IDispatchMessageInspector
方法AfterReceiveRequest
和BeforeSendReply
。
这个链接包含了更多的细节,但是一旦你实现了这些,你应该能够将检查器添加到你的web.config中,并且你应该已经完成了所有的设置。
发布于 2010-10-19 19:45:30
在MessageContract
属性上有一个WrapperName
和WrapperNamespace
属性,我认为这两个属性可以做同样的事情。例如,
[MessageContract(WrapperName = "FooMessage", IsWrapped = true)]
public class Request<T>
{ ... }
请注意,添加了IsWrapped
属性,以指示消息应序列化为包装器元素。
https://stackoverflow.com/questions/3961654
复制相似问题