在C#中使用Web服务的WinForm客户端

时间:2015-09-23 15:06:25

标签: c# winforms web-services

我创建了一个c #Web服务,另一方面我有一个使用该Web服务的C#winform,问题是:Web服务返回一个包含5000行以上的DATASET并得到一个错误

  

错误:已超出传入邮件的最大邮件大小限额(65536)。要增加配额,请在相应的绑定元素上使用MaxReceivedMessageSize属性。

以下是webservice的代码:

y <- ifelse(x < 0, 0, y)

和客户代码:

[WebMethod]
    public DataSet cuentaAtrasadas()
    {
        SqlConnection myConnection = new SqlConnection("Data Source=192.168.87.15;" + "Initial Catalog=Indar;" + "User id=sa;" + "Password=;");

           DataSet ds = new DataSet();
           string query = "Select  Zona = Rama,  CxcInfo.Cliente,  Cte.Nombre,  Movimiento = CxcInfo.Mov,cxcinfo.estatus,  NumDoc = CxcInfo.MovID,  CxcInfo.Referencia,  Oc.MovId,  Comentarios = SubString(Cxc.Comentarios,1,50), " +
             "FechaEmision = Convert(Char(10), CxcInfo.FechaEmision, 103),  Vencimiento = Convert(Char(10), CxcInfo.Vencimiento, 103),  Dias = CxcInfo.DiasMoratorios,  Importe = (Cxc.Importe + Cxc.Impuestos),  Saldo = CxcInfo.Saldo, " +
             " FormaPago = Cte.Descripcion7,   cxc.comentariosCyc,   cxc.comentariosGte,   cxc.fechacomp,cxc.responsablecxc   FROM CxcInfo  Left Outer Join Cte On CxcInfo.Cliente=Cte.Cliente  Left Outer Join (Select Mov, MovId, EstatusOC, Docto, EstadoDocto " +
             " From ( Select E.Mov, E.MovId, EstatusOC = E.Estatus, E.FechaRegistro,         Docto = Em.Mov+' '+Em.MovId, EstadoDocto = Ed.Estado,       Rank() Over (Partition By Em.MovId Order By E.FechaRegistro Desc) As 'UltEmbF'     " +
            " From Embarque E         Left Outer Join EmbarqueD Ed ON E.ID = Ed.ID        Left Outer Join EmbarqueMov Em ON Ed.EmbarqueMov = Em.Id      Where E.Empresa = 'FIN'          And Em.Modulo = 'CXC'       And Em.Mov = 'Factura Indar' " +
            " And E.Mov = 'Orden Cobro'         ) Ue    Where UltEmbF = 1   ) Oc On Oc.Docto = CxcInfo.Mov+' '+CxcInfo.MovId , Cxc  WHERE Cxc.Cliente = Cte.cliente  And Cxc.Id = CxcInfo.Id  And CXCInfo.Empresa = 'FIN' " +
            " And (CxcInfo.Cliente Not In ('C000006') And CxcInfo.Cliente Not Like '[D,E,S,FSF,FIN]%')  And (CxcInfo.Saldo <> 0 And Cxc.Saldo <> 0)  and rama='Z130'  Order By CxcInfo.Mov";
        SqlDataAdapter da = new SqlDataAdapter(query, myConnection);
        da.SelectCommand.CommandTimeout = 0;
        da.Fill(ds, "CTE");
        return ds;
    }

我在这一行中收到错误: DataSet ds = soap.cuentaAtrasadas();  但是我在哪里增加MaxReceivedMessageSize属性?

1 个答案:

答案 0 :(得分:1)

我建议您在binding section上的服务配置文件中设置值:

<bindings>
      <basicHttpBinding>
        <binding name="Binding1"
                 maxReceivedMessageSize = "Your value">
          <security mode="None" />
        </binding>
      </basicHttpBinding>
    </bindings>

此示例基于basicHttpBinding,您可以使用其他绑定