BizTalk WCF 超时问题
BizTalk WCF Timeout Issue
我在 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 分钟后收到超时错误。
下图是接收端口[=19=]
您还可以找到 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 响应屏幕为空白,如下所示
您必须在 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"
在 WCF 自定义发送端口上,更改超时值(关闭、打开、发送、接收)以增加超时。 See the link for more details
您还可以使用 SOAPUI 工具在 BizTalk 之外测试您的 Web 服务,以查看响应时间和响应大小。
更新:
现在出现错误,表明超时的是客户端而不是 BizTalk,在本例中是 SoapUI。根据这个问题的回答 SoapUI: ConnectException: Connection timed out:
Default socket timeout is set to 60000 milliseconds. You can change it:
File -> Preferences -> HTTP Settings -> Socket Timeout
当您与另一个客户端连接时,您还必须check/set其中的超时。
原版POST:
如果您使用的是 BizTalk 10 或更高版本,请检查主机上的响应超时是否设置为大于一分钟的值。
我也遇到了超时问题,这是我更改的一个设置(在本例中更改为最大值)。
您可以为大型事务设置一个特定的主机,其中更改了以分钟为单位的响应超时,并且只有那些需要它的端口才会使用它。
然而,即使我将其更改为最大值后,我在 15 分钟后仍遇到超时。
为此我不得不禁用 Use Transaction,只有当您仍然遇到问题并且您正在检索数据而不是 inserting/changing 数据时才这样做。
以上图片来自我的博客post关于BizTalk Server Negative Acknowledgement issues in SAP and WCF.
的问题
至于在配置中设置 system.transaction 设置,这样做是相当危险的,因为它会影响一切,而不仅仅是那个端口。
问题是关于 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>
我在 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 分钟后收到超时错误。
下图是接收端口[=19=]
您还可以找到 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 响应屏幕为空白,如下所示
您必须在 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"在 WCF 自定义发送端口上,更改超时值(关闭、打开、发送、接收)以增加超时。 See the link for more details
您还可以使用 SOAPUI 工具在 BizTalk 之外测试您的 Web 服务,以查看响应时间和响应大小。
更新:
现在出现错误,表明超时的是客户端而不是 BizTalk,在本例中是 SoapUI。根据这个问题的回答 SoapUI: ConnectException: Connection timed out:
Default socket timeout is set to 60000 milliseconds. You can change it:
File -> Preferences -> HTTP Settings -> Socket Timeout
当您与另一个客户端连接时,您还必须check/set其中的超时。
原版POST:
如果您使用的是 BizTalk 10 或更高版本,请检查主机上的响应超时是否设置为大于一分钟的值。
我也遇到了超时问题,这是我更改的一个设置(在本例中更改为最大值)。
您可以为大型事务设置一个特定的主机,其中更改了以分钟为单位的响应超时,并且只有那些需要它的端口才会使用它。
然而,即使我将其更改为最大值后,我在 15 分钟后仍遇到超时。
为此我不得不禁用 Use Transaction,只有当您仍然遇到问题并且您正在检索数据而不是 inserting/changing 数据时才这样做。
以上图片来自我的博客post关于BizTalk Server Negative Acknowledgement issues in SAP and WCF.
的问题至于在配置中设置 system.transaction 设置,这样做是相当危险的,因为它会影响一切,而不仅仅是那个端口。
问题是关于 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>