超时Web服务客户端

时间:2010-10-12 23:24:48

标签: c# web-services

首先抱歉我的英语。

我遇到了一个Web服务的问题,这是由客户提供的,遗憾的是我无法改变任何东西而且他们反正拒绝了,现在他们使用java来使用这个web服务但是在我的工作中这是不可能的。

使用以下代码,我可以检索高达8k的响应,但除此之外的任何事情都会给我一个“timeoutexception”,我尝试使用一个字符串来保存响应。我对webservices相当新,所以我可能会遗漏一些东西。

public String obtenerData(int idCuestionario, string fechaInicio, string fechaFinal, string path)
{
  try
  {

    String request = "<request><token><![CDATA[" + Globals.token + "]]></token>" +
              "<idCuest><![CDATA[" + idCuestionario + "]]></idCuest>" +
              "<fechaInit><![CDATA[" + fechaInicio + "]]></fechaInit>" +
              "<fechaFin><![CDATA[" + fechaFinal + "]]></fechaFin>" +
              "</request>";

    response = (string)(wsRep.generaReporte(request));

    try
    {
      doc.LoadXml(response);
      if (String.IsNullOrEmpty(path))
      {
        doc.Save(idCuestionario + "_" + ".xml");
      }
      else
      {
        doc.Save(path + "\\" + idCuestionario + "_" + ".xml");
      }

    }
    catch (Exception ex)
    {
      MessageBox.Show(ex.Message);
    }
    Globals.token = Globals.tokenK.obtenerToken(response);
  }

}

这是web.config

<binding name="ReportesWebServiceSoapBinding" closeTimeout="00:01:00"
      openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
      allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
      maxBufferSize="65536" maxBufferPoolSize="524288" maxReceivedMessageSize="65536"
      messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered"
      useDefaultWebProxy="true">
      <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
        maxBytesPerRead="4096" maxNameTableCharCount="16384" />
      <security mode="Transport">
        <transport clientCredentialType="None" proxyCredentialType="None"
          realm="" />
        <message clientCredentialType="UserName" algorithmSuite="Default" />
      </security>
    </binding>

1 个答案:

答案 0 :(得分:1)

您是否尝试过增加超时?

e.g。

wsRep.Timeout = 20000; // 20 second