2010-03-08 3 views
3

Я использую контракт данных в WCF, но в XML-файле отправляются некоторые нежелательные ответы, я не уверен, как изменить класс контракта данных, чтобы я мог избежать отправки этого нежелательное поле ответа. В нижеприведенном XML-файле текст, выделенный полужирным шрифтом и курсивом, нежелателен. Благодарю.Файл ответа веб-службы WCF

<GetCertMailReceiptNumbersResponse xmlns="http://tempuri.org/"> 
     <GetCertMailReceiptNumbersResult xmlns:a="http://schemas.datacontract.org/2004/07/WcfSmartConnect" xmlns:i="http://www.w3.org/2001/XMLSchema-instance"> 
     ***<a:AccountNumber i:nil="true" /> 
     <a:Address1 i:nil="true" /> 
     <a:Address2 i:nil="true" /> 
     <a:City i:nil="true" /> 
     <a:Name1 i:nil="true" /> 
     <a:Name2 i:nil="true" /> 
     <a:OrderNumber>1325661</a:OrderNumber> 
     <a:Password i:nil="true" />*** 
     <a:ReturnCode>200</a:ReturnCode> 
     <a:ReturnMessage /> 
     ***<a:SoftwareID i:nil="true" /> 
     <a:State i:nil="true" /> 
     <a:TrackingStatus i:nil="true" /> 
     <a:USPSReceipt i:nil="true" /> 
     <a:UserID i:nil="true" /> 
     <a:Zip i:nil="true" />*** 
     <a:lsCMRN> 
      <a:CertMailReceiptNumbers> 
      <a:AccountNumber>1</a:AccountNumber> 
      <a:Address1>201 Test Ln</a:Address1> 
      <a:Address2>TSTCity TST 123456</a:Address2> 
      <a:City>TSTCity</a:City> 
      <a:Name1>pinu</a:Name1> 
      <a:Name2 i:nil="true" /> 
      <a:OrderNumber /> 
      ***<a:Password /> 
      <a:ReturnCode>0</a:ReturnCode> 
      <a:ReturnMessage i:nil="true" /> 
      <a:SoftwareID />*** 
      <a:State> TST </a:State> 
      <a:TrackingStatus>MAILED</a:TrackingStatus> 
      <a:USPSReceipt>71926389001019</a:USPSReceipt> 
      ***<a:UserID />*** 
      <a:Zip>123456</a:Zip> 
      <a:lsCMRN /> 
      <a:order>1325661</a:order> 
      </a:CertMailReceiptNumbers> 
      <a:CertMailReceiptNumbers> 
      <a:AccountNumber>10</a:AccountNumber> 
      <a:Address1>121 Mant Drive</a:Address1> 
      <a:Address2>TestCity Test 123456</a:Address2> 
      <a:City> TestCity </a:City> 
      <a:Name1>Kris </a:Name1> 
      <a:Name2 i:nil="true" /> 
      <a:OrderNumber /> 
      ***<a:Password /> 
      <a:ReturnCode>0</a:ReturnCode> 
      <a:ReturnMessage i:nil="true" /> 
      <a:SoftwareID />*** 
      <a:State>Test</a:State> 
      <a:TrackingStatus>MAILED</a:TrackingStatus> 
      <a:USPSReceipt>71926389000026</a:USPSReceipt> 
      ***<a:UserID />*** 
      <a:Zip>123456</</a:Zip> 
      <a:lsCMRN /> 
      <a:order>1325661</a:order> 
      </a:CertMailReceiptNumbers> 
      <a:CertMailReceiptNumbers> 
      <a:AccountNumber>2</a:AccountNumber> 
      <a:Address1>121 Technot</a:Address1> 
      <a:Address2>Test Tst 123456</a:Address2> 
      <a:City>Test</a:City> 
      <a:Name1>Alice</a:Name1> 
      <a:Name2 i:nil="true" /> 
      <a:OrderNumber /> 
      ***<a:Password /> 
      <a:ReturnCode>0</a:ReturnCode> 
      <a:ReturnMessage i:nil="true" /> 
      <a:SoftwareID />*** 
      <a:State>Tst</a:State> 
      <a:TrackingStatus>MAILED</a:TrackingStatus> 
      <a:USPSReceipt>7192638900000033</a:USPSReceipt> 
      ***<a:UserID />*** 
      <a:Zip>123456</</a:Zip> 
      <a:lsCMRN /> 
      <a:order>1325661</a:order> 
      </a:CertMailReceiptNumbers> 
      <a:CertMailReceiptNumbers> 
      <a:AccountNumber>3</a:AccountNumber> 
      <a:Address1>194 Green st</a:Address1> 
      <a:Address2>Matt MA 123456</a:Address2> 
      <a:City>Matt</a:City> 
      <a:Name1>Jewel Bondurant</a:Name1> 
      <a:Name2 i:nil="true" /> 
      <a:OrderNumber /> 
      ***<a:Password /> 
      <a:ReturnCode>0</a:ReturnCode> 
      <a:ReturnMessage i:nil="true" /> 
      <a:SoftwareID />*** 
      <a:State>MA</a:State> 
      <a:TrackingStatus>MAILED</a:TrackingStatus> 
      <a:USPSReceipt>71926389001000000040</a:USPSReceipt> 
      ***<a:UserID />*** 
      <a:Zip>123456</</a:Zip> 
      <a:lsCMRN /> 
      <a:order>1325661</a:order> 
      </a:CertMailReceiptNumbers> 
      <a:CertMailReceiptNumbers> 
      <a:AccountNumber>4</a:AccountNumber> 
      <a:Address1>123 Nasas</a:Address1> 
      <a:Address2>Mtar Tst 123456</a:Address2> 
      <a:City>Mtar</a:City> 
      <a:Name1>Terry </a:Name1> 
      <a:Name2 i:nil="true" /> 
      ***<a:OrderNumber /> 
      <a:Password /> 
      <a:ReturnCode>0</a:ReturnCode> 
      <a:ReturnMessage i:nil="true" /> 
      <a:SoftwareID />*** 
      <a:State>Tst</a:State> 
      <a:TrackingStatus>MAILED</a:TrackingStatus> 
      a:USPSReceipt>7192630000057</a:USPSReceipt> 
      ***<a:UserID />*** 
      <a:Zip>123456</</a:Zip> 
      <a:lsCMRN /> 
      <a:order>1325661</a:order> 
      </a:CertMailReceiptNumbers> 
     </a:lsCMRN> 
     <a:order>0</a:order> 
     </GetCertMailReceiptNumbersResult> 
    </GetCertMailReceiptNumbersResponse> 
+0

если вы отправляете XML - вам нужно выделить соответствующие строки и нажать кнопку «код» (101 010) на панели инструментов редактора! В противном случае XML не будет разборчивым и видимым .... –

+0

показать нам свой класс, который отправляется обратно в ответ! –

ответ

1

Покажите нам свои классы, которые отправляются обратно в ответ от службы WCF! Без них это в лучшем случае игра с угадыванием.

Вы можете поместить определенные атрибуты, связанные с DataContract, в свойствах, чтобы включить или исключить их из процесса сериализации в WCF.

В основном, с WCF в .NET 3.5 SP1, вы не должны специально обозначить ваши классы и их свойства со специальными атрибутами. Если этого не произойдет, сериализатор DataContract будет действовать как XML-сериализатор: все публичные свойства сериализуются.

Если вы не хотите включать определенные свойства в сериализации, вы на самом деле не было выбора, кроме как

  • поставить атрибут ваших классов [DataContract] и
  • поставить атрибут [DataMember] в ваших полях и свойствах, которые вы хотите сериализовать

Все, что вы не украшаете с помощью атрибута [DataMember], затем будет пропущено и не будет включено в ответное сообщение WCF.

Так что в вашем случае, вы должны сделать что-то вроде

[DataContract] 
class GetCertMailReceiptNumbersResult 
{ 
    // no DataMember attribute --> will not be included! 
    int AccountNumber {get;set;} 
    string Address1 {get;set;} 
    ...... 
    string Password {get;set;} 

    // here, include DataMember attributes --> will be included 
    [DataMember] 
    int ReturnCode {get;set;} 
    [DataMember] 
    string ReturnMessage {get;set;} 

    // and so forth 
} 

В принципе, для каждого типа в вашей службе WCF, вам нужно принять решение, какие поля и свойство для включения - отметьте те, с [DataMember] атрибут. Все остальное будет не быть включенным в ваше сериализованное сообщение.

+0

Hey Marc, Спасибо, что сообщили мне о том, как редактировать xml, я относительно новичок в переполнении стека, поэтому не мог понять. У меня есть контракт с данными и данные datamemeber, я просто хотел узнать, есть ли способ, с помощью которого клиент сможет узнать, что такое запрос, и каков ответ. – Pinu

Смежные вопросы