我直接调用了由 iis 托管的 wcf 服务,我是 Delphi 2010
对服务调用的操作可能需要几分钟时间
在 Delphi 中避免超时错误的最佳方法是什么?
我故意在我的 WCF 服务中放置一个 Thread.Sleep 强制它等待 31 秒
30秒后我得到了错误
项目引发异常类 ESOAPHTTPException 并带有消息“请求操作的句柄处于错误状态 - URL:http://10.1.1.4/STC.WcfServices.Host/FlexProcurementService.svc - SOAPAction:http://navsl.stcenergy。 com/FlexProcurement/FlexProcurementService/GetPassthroughSummaryGridReportData'。
原来这是我已经应用补丁的 Delphi 2010 中的一个错误,所以现在我得到错误操作超时
function GetFlexProcurementService(const objServiceInfo: TWCFService; UseWSDL: Boolean; Addr: string; HTTPRIO: THTTPRIO): FlexProcurementService;
var
RIO: THTTPRIO;
begin
Result := nil;
if (Addr = '') then
begin
if UseWSDL then
Addr := objServiceInfo.WSDL
else
Addr := objServiceInfo.URL;
end;
if HTTPRIO = nil then
RIO := THTTPRIO.Create(nil)
else
RIO := HTTPRIO;
try
Result := (RIO as FlexProcurementService);
if UseWSDL then
begin
RIO.WSDLLocation := Addr;
RIO.Service := objServiceInfo.Svc;
RIO.Port := objServiceInfo.Prt;
end else
RIO.URL := Addr;
finally
if (Result = nil) and (HTTPRIO = nil) then
RIO.Free;
end;
结尾;
保罗