2011-03-01 53 views
0

我有IIS7上承載的通用服務接受消息並返回消息(與操作=「*」)。該服務仍然爲客戶發佈meta。WCF定製元數據發佈

使用ServiceMetadataBehavior中的LocationUrl屬性顯式指定此元數據。

我們有一個要求,元數據可以在服務的生命週期中更改,因此實質上元數據有一個生命週期。

我試着將IWsdlExportExtension添加到服務端點行爲,但ExportEndpoint方法只被調用一次(當服務第一次加載時)。有沒有辦法讓我無效加載的元數據,以便任何時候使用HttpGet調用wsdl時,行爲會被調用?

回答

0

您所要求的(在運行時更改已發佈的服務定義)是不可能的 - 您需要刪除指定元數據隨時間變化的需求。

一旦你發佈了服務,服務規範應該改變的唯一原因是服務已經升級。

你應該仔細看看是否有必要制定這項技術要求的業務要求,並嘗試找到另一種方法來滿足它(可能在programmers.stackexchange中發佈)。也許你可以有多種服務可用,並且隨着時間的推移在服務之間切換 - 但是在不知道業務需求的情況下,這在黑暗中會有點刺。

0

不,沒有辦法。此外,如果您需要,您可以使用完全自定義的解決方案,因爲這超出了Web服務的範圍。更改元數據意味着更改服務本身=其內部邏輯,這總是會導致重新啓動主機進程併發布新的元數據。

+0

好吧,服務本身只是許多其他服務(wcf和非wcf)的外觀,並且它們動態地來來去去。 – 2011-03-02 14:36:57

+0

好吧,它是一個路由器?在這種情況下,您應該路由原始的WSDL。 – 2011-03-03 11:37:49

+0

以及它更像一個服務巴士 – 2011-03-05 18:46:27