2011-07-25 3 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ベースの要求のために。私はここに何かを逃している?

ありがとうございます!

マイキー

答えて

1

それはどのWCF「REST」を使用している味の枠組みは明らかではありませんDataContract属性でマークされたクラスがある場合は、のNamespaceプロパティをそれぞれクラスに設定し、必要な名前空間に設定します。それらがマークされていない場合は、その属性をあなたのネームスペースで以下のように追加します。これにより、ネームスペースとのデータコントラクト用に生成されるデフォルトのネームスペースが置き換えられます。

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

おかげで! 実際に私はそれを自分で考え出しましたが、それでもあなたの助けに感謝します。 "デフォルト"の動作を変更する方法はありますか?私はシリアライズしているすべてのクラスで上記を行う必要はありませんか?また、ブール値やintなどの「基本型」であるレスポンスがデフォルトの「microsoft」名前空間で返されることに気付きましたが、それを変更する方法はありますか? –

+0

WCFでは、DataContract属性の代わりにMessageContractを使用すると、SOAPの書式設定をより詳細に制御できます。 [MessageBodyMember属性](http://msdn.microsoft.com/en-us/library/system.servicemodel.messagebodymemberattribute.aspx)名前空間を設定できることは分かっていますが、実際の種類には当てはまりませんメンバー。私が覚えていることから、生成されたWSDLは、通常、XSDでサポートされる型の観点から基本型を定義します。以前はXSDタイプに使用されていたMS名前空間は見たことがありません。あなたはそれを変更するための例で新しい質問を始めたいかもしれません。 –

+0

申し訳ありませんが、あなたの前のコメントがおそらくあなたのケースには当てはまらないので、WCF RESTのものを忘れてしまいました。 –

0

あなたが実装クラスのインターフェイスとServiceBehavior属性上のServiceContract属性の両方に名前空間を必要とする:

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

申し訳ありませんが、私はインターフェイスを使用していないよ...私は単純に上記のクラスを持っている、と私は特定のルートでサービスを登録するGlobal.asaxファイルを使用して... 私が使用してみました"ServiceBehavior"ネームスペース属性ですが、まだ動作しませんでした。 –

+0

新しいWCF RESTは、古いSOAPベースのWCFとは十分に異なると思います。バグかもしれない。 Glenn Blockのブログに何かを投稿しようとするかもしれません。 –

関連する問題