如何在Delphi中设置wcf服务调用方的超时?
我直接调用了由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,我已经为它应用了补丁,所以现在我得到了错误操作超时如何在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
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;