我有三個WCF服務(.svc),它們爲SOAP消息生成.wsdl引用。WCF版本控制:更新屬性名稱空間和支持Previous命名空間
鑑於該命名空間的一部分需要,DataContract屬性,更改所有的ServiceContract,OperationContract的例如
[DataContract(Namespace = "http://old.com.au/types/")]
到
[DataContract(Namespace = "http://new.com.au/types/")]
它怎麼說,我還是能爲客戶提供支持其有舊的服務引用(沒有他們需要更新,因爲他們可能沒有時間立即更新),並允許客戶端獲得新的服務引用來獲得新的名稱空間?沒有任何服務正在改變,只是命名空間。
到目前爲止,我已經讀了很多的東西,但下面的文章表明,它是可以從ServiceHostFactory更改服務類型:http://blog.ranamauro.com/2008/07/hosting-wcf-service-on-iis-site-with_25.html
這意味着創造的每兩份合同(把儘可能多的儘可能在一個地方實現),並在運行時找出要使用的服務類型。這會在我的場景中造成一些混亂。
問:是否有另一種方法可以完成此任務,或者是否應該完成此類任務,並且客戶端要更新到新的名稱空間。
(如果有來自客戶機的命名空間不匹配我的錯誤:用行動消息「...」不能在接收器進行處理,由於ContractFilter不匹配)
謝謝你會試用 – CRice 2010-08-19 07:06:22
+1我也會採取這種方法。 – 2010-08-19 07:41:19
有一個問題,如果我有每個datacontract 2比我需要在許多實現中翻倍...舊服務返回一個ClassA我現在需要一個新的serivce和方法,它返回一個ClassB但它是相同的如果我想分享現有功能的一部分,我必須映射返回ClassA作爲ClassB的內部方法的返回類型。 – CRice 2010-08-20 00:46:57