2010-07-02 44 views
1

當您創建Web服務時,微軟的WCF很容易處理,其中每條消息都有自己的Web方法。 WCF生成所有的WSDL,一切都很簡單。接受不同消息類型的WCF Web方法

我想要做的是有一個Web方法接受多個不同的消息(我不想每次添加新的消息類型時添加一個mew方法)。消息本身將具有標識消息類型的標題信息。一旦我知道消息類型,我就會知道消息其餘部分的結構。

我發現用WCF做這件事的唯一方法是讓該方法接受一個字符串,我將其解析爲XML,然後使用它。但是,我沒有看到在WSDL中發佈各種消息類型的明確方法;所以,整個服務基本上是無證的。

任何人都知道在WCF中使用的技術?

回答

2

可以編寫通過設置操作*並讓它拿在Message對象接受任何消息的操作合同:

[ServiceContract] 
public interface IMessageContract 
{ 
    [OperationContract(Action = "*", ReplyAction = "*")] 
    Message ProcessRequest(Message request); 
} 

消息對象,您可以訪問頭和具有方法反序列化身體。

要導出自己的WSDL,您需要對合同行爲或操作行爲實施IWsdlExportExtension,並將其附加到您的服務。這將允許您訪問WsdlExporter,您可以自己創建一個ContractDescription並調用ExportContract以使其顯示在生成的WSDL中。

相關問題