【问题标题】:BizTalk WCF Timeout IssueBizTalk WCF 超时问题
【发布时间】:2015-07-07 09:30:05
【问题描述】:

我在 BizTalk 中有一个编排,它通过来自 SAP 的 Web 服务收集数据。

我的流程如下。

我们在接收端口上有一个 SOAP 服务,当我们收到来自 SOAP 的请求时,我们会将其转换为 SAP RFC 文件格式并将其发送给 SAP。当我们尝试从 SAP 获得响应时,当响应数据很大时会出现错误。如果响应消息太大,我们的服务会出现超时错误。否则如果消息大小不大也没有问题。

我尝试增加 BizTalk 管理控制台的超时时间,但仍然失败。无论我做什么,超时时间始终为 1 分钟。

将以下 XML 配置标签添加到 machine.config 文件后,我收到如下图所示的错误。

C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config

<configuration>
<system.transactions>
  <machineSettings maxTimeout="00:20:00" />
</system.transactions> 
</configuration> 

下图是 SAP 发送端口

SAP 发送端口详细信息

详细来说,您可以看到我的超时持续时间约为 10 小时,但在 SOAP UI 中,我在 1 分钟后收到超时错误。

下图是接收端口

您还可以找到 biztalk 事件查看器错误,如下所示。

A response message sent to adapter "SOAP" on receive port "WebPort_SAP/MusteriFaturaT/ABC_SAP_Fatura_T_FaturaOrch_InvoiceReceivePort" with URI "/SAP/MusteriFaturaT/ABC_SAP_Fatura_T_FaturaOrch_InvoiceReceivePort.asmx" is suspended. 
 Error details: The original request has timed out. The response arrived after the timeout interval and it cannot be delivered to the client. 

并且 SOAPUI 响应屏幕如下所示为空白

【问题讨论】:

  • 您所说的响应有多大,您能告诉我们响应的大概大小吗?
  • 我无法收到任何响应,这就是为什么我不能说响应大小,但响应消息包括例如 50000 行。 RFC 向我们发送了 50000 行,然后 biztalk 尝试将其转换为 XML。 SAP RFC 在 4-5 分钟内完成流程,但 biztalk 在 1 分钟内收到超时错误。
  • 您是使用 SOAP 适配器还是 WCF 适配器来使用 SAP 服务?
  • 我已经更新了我的问题,你可以看到我的接收和发送端口
  • 您确定不是 SOAP UI 超时了吗?从错误看来,BizTalk 试图传递响应消息,但客户端已超时。

标签: wcf soap biztalk saprfc


【解决方案1】:

在 WCF 自定义发送端口上,更改超时值(关闭、打开、发送、接收)以增加超时。 See the link for more details

您还可以使用 SOAPUI 工具在 BizTalk 之外测试您的 Web 服务,以查看响应时间和响应大小。

【讨论】:

  • 谢谢,问题解决了,是客户端超时问题。
  • @ibrahimsen 正如我在回答和 cmets 中所建议的那样;-)
【解决方案2】:

问题是关于 SOAP UI 超时问题。当我更改 SOAP 的超时属性时,我们的超时持续时间增加到 110 秒。 110 秒是默认的肥皂超时时间。要解决此问题,您必须将以下配置选项添加到 web.config 文件。

<system.web>
    <httpRuntime executionTimeout="43200" />
</system.web>

您还必须将以下配置添加到客户端 app.config 文件中。

<system.serviceModel>
    <bindings>
        <basicHttpBinding>
            <binding name="IBRAHIM_SAP_Fatura_T_FaturaOrch_InvoiceReceivePortSoap" maxReceivedMessageSize="2147483647"  receiveTimeout="03:00:00"
    sendTimeout="02:00:00" transferMode="Streamed"/>
        </basicHttpBinding>
    </bindings>
</system.serviceModel>

【讨论】:

    【解决方案3】:

    更新:

    现在我们有错误,它表明超时的是客户端而不是 BizTalk,在本例中为 SoapUI。根据这个问题的答案SoapUI: ConnectException: Connection timed out:

    默认套接字超时设置为 60000 毫秒。你可以改变它:

    文件 -> 首选项 -> HTTP 设置 -> 套接字超时

    当您与另一个客户端连接时,您还必须检查/设置超时时间。

    原帖:

    如果您使用的是 BizTalk 10 或更高版本,请检查主机上的响应超时是否设置为大于一分钟的值。

    我也遇到了超时问题,这是我更改的一个设置(在本例中为最大值)。

    您可以为大型事务设置特定主机,其中响应超时(以分钟为单位)已更改,并且只有那些需要它的端口使用它。

    但是,即使我将其更改为最大值,我还是在 15 分钟后遇到了超时。

    为此,我不得不禁用使用事务,只有在您仍然遇到问题并且您正在检索数据而不是插入/更改数据时才这样做。

    以上图片来自我关于问题BizTalk Server Negative Acknowledgement issues in SAP and WCF的博文。

    至于在配置中设置 system.transaction 设置,这样做是相当危险的,因为它会影响一切,而不仅仅是那个端口。

    【讨论】:

    • 感谢您的建议,但还是一样 :( 我在 1 分钟后超时。
    【解决方案4】:

    你必须在 machine.config 文件中增加你的超时时间

    C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config

    <configuration>
    <system.transactions>
      <machineSettings maxTimeout="00:20:00" />
    </system.transactions> 
    </configuration> 
    

    您还必须将属性 allowExeDefinition 从“MachineOnly”设置为“MachineToApplication”

    【讨论】:

    • 您好,感谢您的回答。请参阅我的问题,我在您的建议后添加了附加信息。我尝试了这个解决方案,但我无法解决问题。在将配置添加到 machine.config 后,您是否对错误有所了解。
    • 这显然是一个连接问题,您能否发布您的发送端口配置,以便我们了解您使用的适配器、设置...等
    • 我编辑了我的答案尝试设置属性 allowExeDefinition 像指定它应该工作
    • 我们必须查看您的发送端口配置,点击配置并将您的屏幕截图放在那里,以便我们为您提供更好的答案
    • 我只是放了我的详细配置截图,你看到我的超时时间大约是 10 小时,但我的超时时间是 1 分钟。
    猜你喜欢
    • 1970-01-01
    • 2011-06-19
    • 2011-12-28
    • 2011-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多