BizTalk WCF超时问题

4
我在BizTalk中有一个编排,通过Web服务从SAP收集数据。
我的流程如下图所示。
我们在接收端口上有一个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响应屏幕如下所示为空白:

enter image description here


你所说的响应有多大?能告诉我们大概的响应大小吗? - Vikas Bhardwaj
1
你是使用SOAP适配器还是WCF适配器来调用SAP服务? - Vikas Bhardwaj
你使用的BizTalk版本是哪个? - Dijkgraaf
另外,您能否提供您收到的确切错误消息。有时候里面会有一些线索。 - Dijkgraaf
1
你确定不是 SOAP UI 超时了吗?从错误信息来看,似乎 BizTalk 尝试传递响应消息,但客户端已经超时了。 - Dijkgraaf
显示剩余4条评论
4个回答

2
在 WCF 自定义发送端口上,更改超时时间的值(关闭、打开、发送、接收)以增加超时时间。请参阅链接获取更多详细信息 您还可以使用 SOAPUI 工具测试您的 Web 服务,在 BizTalk 之外查看响应时间和响应大小。

谢谢,问题已解决,这是客户端超时问题。 - ibrahimsen
@ibrahimsen,正如我在我的回答和评论中所建议的那样;-) - Dijkgraaf

1
问题是关于SOAP UI超时问题。当我更改SOAP的超时属性时,我们的超时持续时间增加到了110秒。 110秒是默认的SOAP超时持续时间。要解决此问题,您需要将以下配置选项添加到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>

0

更新:

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

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

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

当您连接另一个客户端时,您还需要检查/设置其中的超时时间。

原始帖子:

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

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

enter image description here

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

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

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

enter image description here

上面的图像都来自我的博客文章,关于 BizTalk Server在SAP和WCF中出现的负确认问题
至于在配置文件中设置system.transaction设置,这样做相当危险,因为它会影响到所有东西,而不仅仅是该端口。

谢谢您的建议,但仍然是一样的:( 我在1分钟内超时了。 - ibrahimsen

-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"


你好,感谢您的回答。请查看我的问题,我在您的建议后添加了额外的信息。我尝试了这个解决方案,但是无法解决问题。在向machine.config添加配置后,您有关于错误的想法吗? - ibrahimsen
这显然是一个连接问题,你能否发布你的发送端口配置,以便我们知道你正在使用哪些适配器、设置等等。 - mahieddine
我编辑了我的答案,尝试设置allowExeDefinition属性,如指定的那样,它应该可以工作。 - mahieddine
好的,你能确认两件事吗? *你是否尝试按照我告诉你的设置machine.config? *如果这不起作用,请在编排级别上尝试像这样设置soap客户端超时 MyMessage(SOAP.ClientConnectionTimeout)= 300000; - mahieddine
这是一件相当冒险的事情,因为它会影响到该机器上的所有交易,不仅仅是BizTalk,也不仅仅是那个端口。 - Dijkgraaf
显示剩余3条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接