2011-07-25 24 views
1

WCF的新類以及圍繞它的所有內容。WCF REST WebService - 無法更改ServiceContract XML命名空間

我想將默認的http://schemas.datacontract.org/2004/07/WebService命名空間更改爲其他的基於XML的web服務請求,但不幸的是無法找到任何解決此問題的方法。

我有以下幾點:

[ServiceContract(Namespace = "http://www.mywebservice.com/webservice")] 
.... 
public class WebService 

但測試我的web POST爲基礎的方法的時候,我仍然無法使用新的命名空間(但舊的仍然有效),基於XML的請求。我在這裏錯過了什麼嗎?

在此先感謝!其中WCF「REST」的味道框架您使用

[ServiceBehavior(Namespace = "http://www.mywebservice.com/webservice")] 
public class WebService 

回答

1

目前尚不清楚:

米奇

+0

嘿謝謝! 其實我自己弄明白了,但我非常感謝你的幫助。 有沒有辦法改變「默認」的行爲,所以我不需要在我正在序列化的每個類中進行上述操作?另外,我注意到,那些「基本類型」的響應,比如boolean或int,會返回默認的「microsoft」命名空間,有什麼方法可以改變它嗎? –

+0

如果使用MessageContract而不是DataContract屬性,則WCF允許更多地控制soap格式。我知道你可以設置[MessageBodyMember屬性](http://msdn.microsoft.com/en-us/library/system.servicemodel.messagebodymemberattribute.aspx)命名空間,但我不認爲這將適用於實際類型該成員。從我記憶中,生成的WSDL通常根據XSD支持的類型定義基本類型。我以前沒有見過用於XSD類型的MS命名空間。你可能想用例子來開始一個新的問題來改變它。 –

+0

對不起,我忘記了你使用WCF REST的東西,所以我以前的評論可能不適用於你的情況,你堅持使用MS爲你的XML生成的任何東西。 –

0

您需要在界面上都ServiceContract特性和實現類的ServiceBehavior屬性的命名空間但如果您的類使用DataContract屬性標記,請將其名稱空間屬性設置爲,每個類都是您想要的名稱空間。如果它們沒有被標記,那麼用你的命名空間添加該屬性,如下所示。這應該用您的名稱空間替換爲數據協定生成的默認名稱空間。

[DataContract(Namespace="http://www.mywebservice.com/webservice")] 
public class YourDataClass 
{ 
    //something applicable... 
} 
+0

對不起,但我不使用的接口...我只是有上面的類,我用的是Global.asax文件與特定的路線註冊服務... 我嘗試使用「ServiceBehavior」命名空間屬性,但它仍然沒有工作... –

+0

我想新的WCF REST與舊的基於SOAP的WCF是不同的。可能是一個錯誤。您可以嘗試向Glenn Block的博客發佈內容。 –