如何在Delphi中设置wcf服务调用方的超时?

如何在Delphi中设置wcf服务调用方的超时?,wcf,delphi,wcf-data-services,delphi-2010,Wcf,Delphi,Wcf Data Services,Delphi 2010,我直接调用了由iis托管的wcf服务,我是Delphi 2010 对服务调用的操作可能需要几分钟 在Delphi中避免超时错误的最佳方法是什么 我故意放了一个线程。在我的WCF服务中睡眠迫使它等待31秒 30秒后我发现了错误 项目引发异常类ESOAPHTTPEException,消息为“请求的操作的句柄处于错误状态-URL:http://10.1.1.4/STC.WcfServices.Host/FlexProcurementService.svc -SOAPAction:http://navs

我直接调用了由iis托管的wcf服务,我是Delphi 2010

对服务调用的操作可能需要几分钟

在Delphi中避免超时错误的最佳方法是什么

我故意放了一个线程。在我的WCF服务中睡眠迫使它等待31秒

30秒后我发现了错误

项目引发异常类ESOAPHTTPEException,消息为“请求的操作的句柄处于错误状态-URL:http://10.1.1.4/STC.WcfServices.Host/FlexProcurementService.svc -SOAPAction:http://navsl.stcenergy.com/FlexProcurement/FlexProcurementService/GetPassthroughSummaryGridReportData"

这原来是Delphi2010中的一个bug,我已经为它应用了补丁,所以现在我得到了错误操作超时

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;
结束

保罗

在里约OnBeforePost:

procedure TEETOUpsertWrapper.OnBeforePost(const HTTPReqResp: THTTPReqResp; Data: Pointer);    begin
  SetTimeout(HTTPReqResp, Data, 5 * 60);
end;

我需要完全避免超时?我发送该消息时不在工作,现在添加了代码和错误。上面显示的错误是由于Delphi 2010Hanks中的错误导致的。对于这个Chris,InternetSetOption和常量需要什么单位?wininet。为了清楚起见,我补充了答案。
procedure TEETOUpsertWrapper.OnBeforePost(const HTTPReqResp: THTTPReqResp; Data: Pointer);    begin
  SetTimeout(HTTPReqResp, Data, 5 * 60);
end;