2016-10-04 4 views
1

リクエストにxmlns属性がある場合に機能するRESTfulなサービスを構築しています。しかし、xmlns属性がなくてもサービスをリクエストできるようにする必要があります。WCF RESTfulサービス - リクエストでxmlns属性が不要なサービスを作成するにはどうすればよいですか?

これは私が今働いているものです:

<ITEM_SEND xmlns="http://schemas.datacontract.org/2004/07/WCFInventoryService"> 
    <TRAN_ID>9483564</TRAN_ID> 
    <VENDOR_PART>D336</VENDOR_PART> 
</ITEM_SEND> 

これは私が要求として受け入れるために必要なものである:ここでは

<ITEM_SEND> 
    <TRAN_ID>9483564</TRAN_ID> 
    <VENDOR_PART>D336</VENDOR_PART> 
</ITEM_SEND> 

は私のインターフェイスです:

namespace WCFInventoryService 
{ 
    // NOTE: You can use the "Rename" command on the "Refactor" menu to change the interface name "IService1" in both code and config file together. 
    [ServiceContract(Namespace = "")] 
    public interface IInvService 
    { 
     [OperationContract] 
     //[WebGet(UriTemplate="/Employees",ResponseFormat=WebMessageFormat.Xml)] 
     //Employee[] GetEmployees(); 
     [WebInvoke(Method = "POST", 
      RequestFormat = WebMessageFormat.Xml, 
      ResponseFormat = WebMessageFormat.Xml, 
      BodyStyle = WebMessageBodyStyle.Bare, 
      UriTemplate = "")] 
     ITEM_REPLY GetInventory(ITEM_SEND query); 
    } 

public class ITEM_SEND 
    { 
     public string TRAN_ID { get; set; } 
     public string VENDOR_PART { get; set; } 
    } 
} 

I私がリクエストしたDataコントラクトの名前空間を ""に設定して名前空間を変更しようとしました。

[DataContract(Namespace = "")] 
    public class ITEM_SEND 
    { 
     public string TRAN_ID { get; set; } 
     public string VENDOR_PART { get; set; } 
    } 

しかし、それは、私はあなたが明示的に任意の名前空間に属していないためにあなたのデータコントラクトを定義することができ Without Namespace = ""

With Namesspace = ""

+1

まだオプションがある場合は、JSONに切り替えます。名前空間がありません。 –

答えて

2

からブラウザに私の要求の変化を私のSVCを表示したときのように動作しませんでした -

[DataContract(Namespace = "")] 
public class ITEM_SEND 
{ 
    [DataMember] 
    public string TRAN_ID { get; set; } 
    [DataMember] 
    public string VENDOR_PART { get; set; } 
} 

希望これは

に役立ちます
+0

UGH!私は実際にこれを解決策として見ましたが、DataMemberアノテーションを中止したため、私にはうまくいきませんでした。私は最初にこれがうまくいかないと思ったが、あなたが書いたことを凝視して、私は突然、あなたが[DataMember]アノテーションを追加したことを知った。ロングストーリーショット...それは動作します! Thax –

+0

はい... [DataContract]でクラスをデコレートする場合は、[DataMember]で公開するメンバーを明示的にマークする必要があります。これらの注釈付きメンバーだけがリクエスト/レスポンスxmlにシリアライズされます –

関連する問題