2010-08-04 55 views
4

在設計我的服務時,我決定自定義出現在生成的WSDL中的名稱空間。使用ContractNamespace屬性設置WCF DataContract名稱空間

對於DataContracts,我遇到ContractNamespace屬性,這似乎是一個很好的快捷方式,可以明確地爲每個DataContract設置相同的名稱空間。我最初的嘗試是這樣的:

[assembly:ContractNamespace("http://types.mycompany.com/2010/08/03")] 
namespace MyCompany.MyContracts 
{ 
    [DataContract] 
    //...multiple datacontract classes here 
} 

令我驚訝的是,這並沒有奏效。經過多次修補之後,我終於成功地將該屬性的ClrNamespace屬性設置爲等於我的CLR名稱空間(示例中的MyCompany.MyContracts)。所以像這樣的東西

[assembly:ContractNamespace("http://types.mycompany.com/2010/08/03", 
      ClrNamespace="MyCompany.MyContracts")] 

我的問題是:爲什麼這不工作的第一種方式?我的期望是,通過不指定CLR namepsace,這個屬性會影響程序集範圍內的所有數據協議。

回答

4

如果我沒有弄錯,如果ClrNamespace被省略,那麼契約命名空間設置適用於全局命名空間中的對象。

+0

是的,它清除它。我甚至不熟悉全球名字 – Michael 2010-08-04 20:58:36