私は、iis I'm Delphi 2010 によってホストされている wcf サービスを簡単に呼び出しています。
サービスで呼び出される操作には数分かかる場合があります
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;
終わり;
ポール