4

我在 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 响应屏幕是空白的,如下所示

在此处输入图像描述

4

4 回答 4

2

在 WCF 自定义发送端口上,更改超时值(关闭、打开、发送、接收)以增加超时。请参阅链接查看更多细节

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

于 2015-07-07T14:34:50.580 回答
1

问题是关于 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>
于 2015-07-08T10:52:50.953 回答
0

更新:

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

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

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

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

原帖:

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

我也遇到了超时问题,这是我更改的一个设置(在这种情况下为最大值)。

在此处输入图像描述

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

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

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

在此处输入图像描述

以上图片来自我关于SAP 和 WCF 中 BizTalk Server Negative Acknowledgment 问题的博文。

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

于 2015-07-07T21:03:32.493 回答
-1

您必须在 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”

于 2015-07-07T10:14:26.107 回答