BizTalk WCF超时问题

时间:2015-07-07 09:30:06

标签: wcf soap biztalk sap rfc

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

我的流程如下。

enter image description here

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

我尝试在BizTalk管理控制台上增加超时持续时间但仍然失败。无论我做什么,超时持续时间总是在1分钟内。

将下面的XML配置标记添加到machine.config文件后,我得到一个错误,如下图所示。

  

C:\的Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \配置

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

enter image description here

下图是SAP Send Port

enter image description here

SAP发送端口详细信息

enter image description here

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

下图是接收端口

enter image description here

您还可以找到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响应屏幕为空白,如下所示

enter image description here

4 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分: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>

答案 2 :(得分:0)

<强>更新

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

  

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

     

档案 - &gt;偏好 - &gt; HTTP设置 - &gt;套接字超时

当您与其他客户连接时,您还必须检查/设置超时。

原始帖子:

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

我遇到了Timeout的问题,这是我改变的一个设置(在这种情况下是最大值)。

enter image description here

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

然而,即使我将其更改为最大值后,我在15分钟后遇到超时。

为此,我必须禁用“使用事务”,只有在遇到问题并且正在检索数据而不是插入/更改数据时才执行此操作。

enter image description here

以上图片来自我的博客文章BizTalk Server Negative Acknowledgement issues in SAP and WCF

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

答案 3 :(得分:-1)

您必须在machine.config文件中增加超时

  

C:\的Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \配置

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

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