2010-11-15 16 views
3

我有一個古老的Web服務客戶端需要與我的WCF 4.0服務交談。客戶是另一家不會改變的公司中的大型舊系統。我們有需要WCF功能的新客戶,所以我們擁有它,但現在需要更多的工作來支持舊客戶端。使WCF 4 WSDL看起來像Web Service WSDL?

我已經用屬性裝飾了WCF服務的幾個部分,並且很多發出的WSDL看起來像古代客戶端用來調用的Web服務。我還有幾個部分看起來不像傳統的東西。我可以在哪裏尋找使新服務器看起來像舊的?

舊的(Web服務)系統具有:

<wsdl:portType name="QueueServiceSoap"> 
<wsdl:operation name="SubmitRequest"> 
<wsdl:input message="tns:SubmitRequestSoapIn"/> 
<wsdl:output message="tns:SubmitRequestSoapOut"/> 
</wsdl:operation> 
</wsdl:portType> 

新(WCF服務)系統具有:

<wsdl:portType name="QueueServiceSoap"> 
<wsdl:operation name="SubmitRequest"> 
<wsdl:input wsaw:Action="https://test.com/SubmitRequest" message="tns:QueueServiceSoap_SubmitRequest_InputMessage"/> 
<wsdl:output wsaw:Action="https://test.com/QueueServiceSoap/SubmitRequestResponse" message="tns:QueueServiceSoap_SubmitRequest_OutputMessage"/> 
</wsdl:operation> 
</wsdl:portType> 

我需要改變WCF服務看起來像WS之一。 .. 幫幫我?

謝謝!

+0

找到發佈您的服務綁定在這裏請加入很好的參考。 – Aliostad 2010-11-15 21:57:16

+0

爲什麼你認爲你需要改變WSDL?老客戶需要閱讀嗎?是否造成問題?消息格式不同?你沒有真正說出了什麼問題。 – 2011-01-19 20:22:55

回答

0

創建一個處理BeginRequestHttpModule,使用它在WSDL被詢問(Request["WSDL"] != null)時附加響應過濾器。響應過濾器將是您編寫的從MemoryStream繼承的類,它將適當地改變響應。

用於編寫響應濾波器可以在http://www.4guysfromrolla.com/articles/120308-1.aspx

+1

這將適用於「?WSDL」請求,但不適用於元數據交換請求。另外,如果他的新服務實際上_does_匹配他的新WSDL呢?在他擔心讓_WSDL_匹配舊的WSDL之前,他最好讓_service_匹配舊的WSDL。 – 2011-01-19 20:24:19