WCF错误参数日期等于“01/01/0001”

问题描述 投票:0回答:2

我目前正在从SoapUI发送测试以下请求:

<caja:GenerarObligacion>
  <caja:Obligacion>
    <obl:BenCheq>TALLERES ARROYO</obl:BenCheq>
    <obl:CodMoneda>S/.</obl:CodMoneda>
    <obl:CodProd>VM14</obl:CodProd>
    <obl:CodRamo>AUTO</obl:CodRamo>
    <obl:CodUsuario>ACSELP</obl:CodUsuario>
    <obl:DptoEmi>000101</obl:DptoEmi>
    <obl:FecFinVig>2024-02-28T12:00:01</obl:FecFinVig>
    <obl:FecIniVig>2025-02-28T12:00:01</obl:FecIniVig>
    <obl:FecMod>2026-07-17T13:02:05</obl:FecMod>
    <obl:FecNotif>2026-07-17T13:02:05</obl:FecNotif>
    <obl:FecOcurr>2025-01-28T08:41:53</obl:FecOcurr>
    <obl:FecRecepDocPago>2025-01-28T00:00:00</obl:FecRecepDocPago>
    <obl:IdePol>25000293961</obl:IdePol>
    <obl:IdeSin>1500013900</obl:IdeSin>
    <obl:IndCheque>S</obl:IndCheque>
    <obl:ItemOblig>
      <fac:BEDetalleObligacion>
        <fac:CodCpto>DSCTOS</fac:CodCpto>
        <fac:ItemDoc/>
        <fac:FecFact>2025-01-28T00:00:00</fac:FecFact>
        <fac:MtoCptoEgre>600.0</fac:MtoCptoEgre>
        <fac:NroFact>444444444</fac:NroFact>
        <fac:NumCpto>1</fac:NumCpto>
        <fac:SerieFact>f045</fac:SerieFact>
        <fac:TipoRegCompra>01</fac:TipoRegCompra>
      </fac:BEDetalleObligacion>
      <fac:BEDetalleObligacion>
        <fac:CodCpto>ISLV</fac:CodCpto>
        <fac:ItemDoc/>
        <fac:FecFact>2025-01-28T00:00:00</fac:FecFact>
        <fac:MtoCptoEgre>108.0</fac:MtoCptoEgre>
        <fac:NroFact>444444444</fac:NroFact>
        <fac:NumCpto>2</fac:NumCpto>
        <fac:SerieFact>f045</fac:SerieFact>
        <fac:TipoRegCompra>01</fac:TipoRegCompra>
      </fac:BEDetalleObligacion>
    </obl:ItemOblig>
    <obl:MtoAprob>708.0</obl:MtoAprob>
    <obl:NumAprob>18000493</obl:NumAprob>
    <obl:NumPol>2500029396</obl:NumPol>
    <obl:StsOblig>VAL</obl:StsOblig>
    <obl:StsSin>ACT</obl:StsSin>
    <obl:TasaCambio>1.0</obl:TasaCambio>
    <obl:TipoAprob>P</obl:TipoAprob>
    <obl:TipoBenef>TALR</obl:TipoBenef>
    <obl:TipoDocPago>CHQ</obl:TipoDocPago>
  </caja:Obligacion>
  <caja:Tercero>
    <ter:BETercero>
      <ter:NumId>650606871</ter:NumId>
      <ter:TipoId>J</ter:TipoId>
    </ter:BETercero>
  </caja:Tercero>
</caja:GenerarObligacion>

所有数据都很好地到达,除了“FecFact”字段,如请求此字段中所示,如果它有一个日期,但是当到达可视调试时,显示以下值“01/01/0001”:

image1

尽管向FecFact字段发送了一个值,但它设置的日期显示在图像“01/01/0001”中,就好像字段到达为空。这是我的实体的声明。

[DataMember]
public String CodCtpo { get; set; }
[DataMember]
public DateTime FecFact { get; set; }
[DataMember]  //IndIGV
public String IndnoGravado { get; set; }
[DataMember] //MtoCptoAprob
public Decimal MtoCptoEgre { get; set; }
[DataMember] // NumCpto - ?uso?   NUMDETOBLIG
public Int32 NumCpto { get; set; }
[DataMember]
public String NroFact { get; set; }
[DataMember]
public String SerieFact { get; set; }
[DataMember]
public String TipoRegCompra { get; set; } //Funcional como OB
[DataMember]
public String CodSvcio { get; set; }
wcf
2个回答
0
投票

DateTime默认由DateTime.MinValue初始化,实际上1/1/0001 12:00:00 AM与你得到的完全相同。

你应该声明可空字段,如果想要null日期,如:

DateTime? dt = null;

要么

DateTime变量与DateTime.MinValue进行比较,并将数据库查询中的相应值设置为null,或将UI变量中的相应值设置为null。


0
投票

根据您的描述,我已成功恢复您的问题,您唯一需要做的是尝试将NameSpace属性分配给DataContract类。

    [DataContract(Namespace ="mydomain")]
    public class Product
    {
        [DataMember]
        public int ID { get; set; }
        [DataMember]
        public DateTime dateTime { get; set; }
     }

我希望这些信息有用。

© www.soinside.com 2019 - 2024. All rights reserved.