从MessageDescription创建消息

时间:2009-11-06 19:54:44

标签: wcf wsdl message

我正在尝试使用用户提供的一组参数和我通过从WCF中的OperationDescription对象中提取输入消息解决的MessageDescription来创建Message。

看起来很简单,但我似乎无法找到有关如何使用Body.WrapperElementName等设置以及MessageDescription中描述的各种消息部分的信息。

是否有任何WCF专家可以帮助我了解这个相当复杂的问题?

2 个答案:

答案 0 :(得分:0)

我不认为这个功能实际上是直接暴露的。

我没有试过这个,但是花了一点时间用反射器,如果你不介意弄脏手并使用一点反射,一个选项可能是使用Activator.CreateInstance()来创建System.ServiceModel.Dispatcher.DataContractSerializerOperationFormatter类的新实例,该类实现IClientMessageFormatter接口。

以下是构造函数的参数:

  • OperationDescription description
  • DataContractFormatAttribute dataContractFormatAttribute
  • DataContractSerializerOperationBehavior serializerFactory

请注意,在任何情况下,您都需要完整的OperationDescription对象,但看起来您无论如何都可以访问它。

然后,只需要调用SerializeRequest()。

答案 1 :(得分:0)

如果您可以创建[MessageContract]类型来表示消息,那么您可以使用TypedMessageConverter类。

或者,您可以使用DataContractSerializerOperationBehavior执行此操作。你需要“捣乱”一些存根,例如OperationDescription。

在学习MessageDescription本身及其中的各种参数方面,我建议您创建一个类似于您想要查看的[ServiceContract]界面,然后使用ContractDescription.GetContract加载ContractDescription并检查MessageDescriptions对象。您可以看到WCF用于默认值等等。

如果您对特定属性有疑问,我可以提供帮助。