2017-10-25 4 views
0

私はWCFサービスを呼び出すクラスライブラリを持っています。このサービスは完了するまでに約3分かかります。私はWindowsフォームを使用しており、httpRuntime要素のApp.ConfigにexecutionTimeoutを追加しました。それでも、トランザクションが完了するまで待つことはありません。通話の待機時間を長くするにはどうすればよいですか?私は私のWindowsのApp.configファイルに以下のコードを追加したC#クラスライブラリ(DLL)を増やすwcfサービスを呼び出すタイムアウト

は、私は以下のようなボタンクリックで自分のサービスを呼び出すアプリケーション

<system.web> 
    <compilation debug="false"/> 
    <httpRuntime executionTimeout="360" /> 
    </system.web> 

フォーム。

Registration rObj = new Registration("http://x.x.x.x:1010/Service.svc"); 
RegInfo sObj = rObj.ValidateRegistration("1234"); 
MessageBox.Show(sObj.bIsRegistered.ToString()); 

しかし、上記の呼び出しでは、要求が応答するのに少し時間がかかります。

+0

クライアントでタイムアウトを設定しましたか?私はそれを見ることができません。 –

+0

私はクライアントに6分も設定しました – smilu

答えて

0

あなたにもWindowsがアプリケーション

1)WCFアプリケーションを構成するようWCFアプリケーションにタイムアウトを設定する必要があります。web.configファイル

=>最初の変更

<bindings> 
    <basicHttpBinding> 
     <binding name="BasicHttpsBindingConfig" maxReceivedMessageSize="2147483647" maxBufferSize="2147483647" 
     receiveTimeout="00:10:00" sendTimeout="00:10:00"> 
    <readerQuotas maxArrayLength="2147483647" maxStringContentLength="2147483647"/> 
     </binding> 
    </basicHttpBinding> 
</bindings> 

の変化の下に追加してください=>第2の変更:web.configのタイムアウトを延ばす

<configuration> 
    <system.web> 
    <httpRuntime executionTimeout="600"/> 
    </system.web> 
</configuration> 

2)Wアプリケーション例:

public static void Main() 
     { 
      Uri baseAddress = new Uri("http://localhost/MyServer/MyService"); 

      try 
      { 
       ServiceHost serviceHost = new ServiceHost(typeof(CalculatorService)); 

       WSHttpBinding binding = new WSHttpBinding(); 
       binding.OpenTimeout = new TimeSpan(0, 10, 0); 
       binding.CloseTimeout = new TimeSpan(0, 10, 0); 
       binding.SendTimeout = new TimeSpan(0, 10, 0); 
       binding.ReceiveTimeout = new TimeSpan(0, 10, 0); 

       serviceHost.AddServiceEndpoint("ICalculator", binding, baseAddress); 
       serviceHost.Open(); 

       // The service can now be accessed. 
       Console.WriteLine("The service is ready."); 
       Console.WriteLine("Press <ENTER> to terminate service."); 
       Console.WriteLine(); 
       Console.ReadLine(); 

      } 
      catch (CommunicationException ex) 
      { 
       // Handle exception ... 
      } 
     } 
関連する問題