【问题标题】:WCF web service call time outWCF Web 服务调用超时
【发布时间】:2014-03-31 07:13:29
【问题描述】:

我正在使用来自 url 的 Web 服务。当我使用 SoapUI 进行测试时,我会立即得到响应(见下图),并且我发出的请求数据已经通过了另一端。

所以在我的 C# 应用程序中我做了同样的事情,我使用了 Web 服务 wsdl 并自动生成了代理类。我基于该代理类创建了一个请求,请求数据与我在 SoapUI 中使用并发送出去的请求数据完全相同。我确认在另一端他们成功收到了我的数据并且没有显示错误。

但是,我再也没有收到任何 ID,过了一段时间我会收到此异常:

错误对“http://someURLWebservice.com/WSoperation”的 HTTP 请求已超过分配的超时 00:00:59.9470000。分配给此操作的时间可能是较长超时的一部分。

我在这里遗漏了什么吗?我下载了 WSDL 并使用 SoapUI 生成了模拟服务,如果我在本地调用该模拟 Web 服务,我会立即得到它。立即返回 ID。

这是我的代码:

 string serverURL = Settings.Default.ExtensionServiceURL;

 //Get Proxy class client
 ext.ExtWSPortTypeClient client = new ext.ExtWSPortTypeClient();
 EndpointAddress addr = new EndpointAddress(serverURL);

 try
   {
      client.Endpoint.Address = addr;
      Uri site = new Uri(serverURL);
      client.Endpoint.ListenUri = site;
      ExtensionData eData = new ExtensionData();
      client.ChannelFactory.CreateChannel();

      Console.WriteLine("Sending Locator Event Request to Web Service");
      ext.locatorEventResponse1 resp = await client.locatorEventAsync(eData.GenerateLocatorEventRequest(ev));
   }
   catch (Exception ex)
   {
       Console.WriteLine("Error " + ex.Message);
   }
   finally
   {
       if (client != null)
       {
          ((ICommunicationObject)client).Close();
       }
   }

【问题讨论】:

  • 有人吗? :( ...我尝试使用相同的代码在webservicex.net/geoipservice.asmx?WSDL 测试Web 服务,我的应用程序立即得到了响应。
  • 你在服务器端的设置如何?
  • 这是最难的部分,我写这个是为了集成,所以说实话我真的不知道。但是,如果您能指出我应该与他们核实的事情,那也会有所帮助。
  • 你确定你用 SoapUI 调用完全相同的方法吗?你不能从 c# 代码中调用这个 web 服务的非异步方法吗?

标签: c# .net web-services wcf wsdl


【解决方案1】:

检查消息配额设置,可能是您的服务发送的超出配置的数量

【讨论】:

    【解决方案2】:

    在类似的情况下,我会从以下开始:

    使用 WCF 客户端进行测试并捕获跟踪文件:

    用soapUI客户端测试并捕获Http Log

    • 清除soapUI http 日志(底部的选项卡之一)
    • 通过soapUI测试请求发送消息
    • 保存 Http 日志

    获得两个客户端的跟踪信息后,您应该能够比较交易并希望确定问题的根源。特别是,我建议确认双方的服务地址,然后比较 SOAP 信封以确保 WCF 绑定的设置与soapUI 设置一致。

    此外,您还可以使用 Fiddler 查看 Web 服务通信。以下 SO 帖子提供了很好的参考链接。 Fiddler and Monitoring Web Service Traffic

    希望这会有所帮助。
    问候,

    【讨论】:

      【解决方案3】:

      所以我最终配置 Fiddler2 来嗅探我的 SoapUI 请求并将其与我的应用程序请求进行比较。在 Application 请求标头中,我看到了以下内容:

      Content-Type: text/xml; charset=utf-8
      SOAPAction: ""
      Host: engage.ext-inc.com
      Content-Length: 1036
      **Expect: 100-continue**
      

      那个 Expect:100-continue 不在成功发出并得到响应的 SoapUI 请求中。考虑到这一点,我在 Fiddler 中接受了 SoapUI 请求,并在此基础上编写了一个新请求……除了我输入 Expect:100-continue 并猜测是什么,我没有收到任何响应。

      在阅读它时,我遇到了这个link

      瞧,在放置 ServicePointManager.Expect100Continue = false;在进行 Web 服务调用之前进入我的代码,我会立即得到响应。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-12-29
        • 2014-08-23
        • 1970-01-01
        • 1970-01-01
        • 2012-11-24
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多