c# - WCF Web 服务调用超时

标签 c# .net web-services wcf wsdl

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

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

但是,我从来没有收到任何 ID,过了一段时间我会得到这个异常:

Error The HTTP request to 'http://someURLWebservice.com/WSoperation' has exceeded the allotted timeout of 00:00:59.9470000. The time allotted to this operation may have been a portion of a longer timeout.

我是不是漏掉了什么?我下载了 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();
       }
   }

enter image description here

最佳答案

在类似情况下,我将从以下内容开始:

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

用soapUI客户端测试并抓取Http Log

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

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

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

希望这对您有所帮助。
问候,

关于c# - WCF Web 服务调用超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22075608/

相关文章:

c# - 在 C# 中传递变量

c# - 如果 Apllication.Current 为 NULL,如何获取所有事件 wpf 窗口(多线程)的集合?

c# - 检查空值

java - 每当有键匹配时减去两个映射的值?

c# - 使用 .Net XmlSerializer,有没有办法省略根级标记?

c# - 如何更改此正则表达式以与 .Net 正则表达式引擎一起使用?

c# - 是否可以更改 Xamarin 项目中 System.Runtime 的版本?

wcf - 如何让 WCF 与此 Web 服务对话?

php - PayPal 交易可以包括第三方吗?

c# - 设计模式,以便在调用静态方法之前始终调用静态 init 方法