2014-02-27 35 views
0

我有一個DataContract元素如下我的WCF Web服務請求:數據契約序列化WCF Web服務請求

[DataContract] 
    public sealed class Request 
    { 
     public int EventID { get; set; } 
    } 

一旦我的web服務運行,從WSDL生成我的要求是這樣的:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tem="http://tempuri.org/"> 
    <soapenv:Header/> 
     <soapenv:Body> 
      <tem:EventDismissRequest> 
       <tem:request/> 
      </tem:EventDismissRequest> 
     </soapenv:Body> 
    </soapenv:Envelope> 

但是,我希望它如下所示,這意味着我的事件ID嵌套在請求元素中,沒有任何前綴。

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tem="http://tempuri.org/"> 
     <soapenv:Header/> 
     <soapenv:Body> 
      <tem:EventDismissRequest> 
      <request> 
       <EventID>?</EventID> 
      <request> 
      </tem:EventDismissRequest> 
     </soapenv:Body> 
</soapenv:Envelope> 

我想我有我的datacontract內做一些XML屬性,但也有很多選擇,我已經嘗試沒有成功的多種方法。

+1

您需要用'[DataMember]'屬性修飾EventID。 –

回答

1

我相信你需要的屬性是[Serializable]如下,以及你想要序列化的每個項目的[DataMember]。

[DataContract] 
[Serializable] 
public sealed class Request 
{ 
    [DataMember] 
    public int EventID { get; set; } 
} 
+0

謝謝安德魯,你的建議效果很好,但我看到,有沒有給我省略工程並以離開? – Fylix

+0

您使用的是什麼版本的WCF?我在我的郵箱中沒有看到 – Andrew

+0

我正在運行4.5 – Fylix