2012-07-19 3 views
0

외부 웹 서비스를 사용하는 프로그램이 있습니다. 내가 요청에 보낼 필드 중 1 개는 DateTime 필드이지만, 같은 객체의 많은 다른 사람들과 함께 설정해도 존재하지 않는 것처럼 보이며 잘 전달됩니다.WCF 요청에서 DateTime이 누락 되었습니까?

<bettingRequest xmlns=""> 
    <accountPin>0</accountPin> 
    <betDetailsRequestList> 
     <acceptPartial>0</acceptPartial> 
     <accumulatorBet>false</accumulatorBet> 
     <accumulatorId>0</accumulatorId> 
     <allUpFormula>0</allUpFormula> 
     <betAmountList> 
     <amountInvested>25</amountInvested> 
     <returnsPerBet>0</returnsPerBet> 
     </betAmountList> 
     <betRefId>0</betRefId> 
     <betType>Parimutuel</betType> 
     <scheduledType>1</scheduledType> 
     <fixedOddsProdCode>0</fixedOddsProdCode> 
     <flexiBet>false</flexiBet> 
     <legList> 
     <prodCode>1</prodCode> 
     <propositionNumber>0</propositionNumber> 
     <raceNumber>2</raceNumber> 
     <selectionList> 
      <selectionName>TIM FIN</selectionName> 
      <selectionNumber>6</selectionNumber> 
      <selectionSeparator /> 
     </selectionList> 
     </legList> 
     <mystery>false</mystery> 
     <notifyMethod>0</notifyMethod> 
     <numMultiParlayBet>0</numMultiParlayBet> 
     <ordinalNumber>1</ordinalNumber> 
     <meetingCode>13</meetingCode> 
    </betDetailsRequestList> 
    </bettingRequest> 

여기가 생성하는 것입니다 :

 bettingRequest betReq = new bettingRequest(); 
     betDetailsReq betDetReq = new betDetailsReq(); 

     List<legDetailsReq> leglist = new List<legDetailsReq>(); 
     List<betSelection> sellist = new List<betSelection>(); 
     List<betAmount> betamtlist = new List<betAmount>(); 
     List<betDetailsReq> betdetaillist = new List<betDetailsReq>(); 

     betSelection sel = new betSelection(); 
     sel.selectionNumber = selection.ToString(); 
     sel.selectionName = Runner; 
     sel.selectionSeparator = ""; 
     sellist.Add(sel); 

     legDetailsReq leg = new legDetailsReq(); 
     leg.prodCode = 1; 
     leg.propositionNumber = 0; 
     leg.raceNumber = racenum; 
     leg.selectionList = sellist.ToArray(); 
     leglist.Add(leg); 

     betAmount betAmt = new betAmount(); 
     betAmt.amountInvested = betamt; 
     betAmt.returnsPerBet = "0"; 
     betamtlist.Add(betAmt); 

     betDetReq.betType = "Parimutuel"; 
     betDetReq.betAmountList = betamtlist.ToArray(); 
     betDetReq.legList = leglist.ToArray(); 
     betDetReq.allUpFormula = "0"; 
     betDetReq.acceptPartial = 0; 
     betDetReq.accumulatorBet = false; 
     betDetReq.betRefId = 0; 
     betDetReq.scheduledType = 1; 
     betDetReq.fixedOddsProdCode = 0; 
     betDetReq.flexiBet = false; 
     betDetReq.mystery = false; 
     betDetReq.notifyMethod = 0; 
     betDetReq.ordinalNumber = 1; 
     betDetReq.meetingCode = meetingcode; 
     betDetReq.meetingDate = DateTime.Now; 
     betdetaillist.Add(betDetReq); 

     betReq.betDetailsRequestList = betdetaillist.ToArray(); 
     bettingResponse resp = bet.validateBet(meta, betReq); 

을 여기에 코드입니다

내가 메시지 관리자를 넣어 그것을 보내는 것을 봐 가지고, 여기에 요청입니다 직렬화의 경우 :

[System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified, Order=11)] 
    public System.DateTime meetingDate { 
     get { 
      return this.meetingDateField; 
     } 
     set { 
      this.meetingDateField = value; 
      this.RaisePropertyChanged("meetingDate"); 
     } 
    } 

누락 된 특성은 betDetReq.meetingDate, WSDL ca n은 https://api.tab.com.au/tabapi/services/betting?wsdl에 표시됩니다.

누군가 내가 잘못 설명하고 있습니다. 동일한 누락 된 결과를 가진 DataTime의 다양한 변형을 시도했습니다.

감사 딘

+0

meetingDate가 WSDL에서 ''으로 지정 되었기 때문에 이상합니다. 최신 WSDL을 사용하도록 클라이언트 프로젝트에서 서비스를 새로 고쳤습니까? –

답변

0

true로 "지정"속성을 설정해야합니다.

betDetReq.meetingDate = DateTime.Now; 
betDetReq.meetingDateSpecified = true; 

당신은 선택 필드가 있으면합니다 (minOccurs 속성이 0 하나 즉), 다음 프록시는 "지정"속성이 포함되어 있습니다. 이 값을 true로 설정하지 않으면 필드가 요청 본문에 추가되지 않습니다.

+0

물론 아! 감사합니다. RB, 우리 둘 중 하루 종일 주연했습니다! –

관련 문제