2016-12-20 5 views
0

リクエストを完了するのに時間がかかるHTTPクライアントがあり、特定の時間(たとえば5秒)後に切断したい場合があります。asp.netでの応答タイムアウトを減らすにはどうしたらいいですか?

web.configではexecutionTimeoutを値に設定できますが、私が設定したときにはapiはそれを守らないようです。

これをテストするには、Thread.Sleepの値をweb.configの設定値より大きく設定したが、応答が途切れていないコントローラを作成しています。

+0

を使用して、いくつかの成功は今まで、これが軌道に乗るために管理しなければなりませんでしたか? – Leonardo

+0

これは好きではありません。しかし、私はPollyライブラリを使って成功しました。私は今答えを追加します –

答えて

0

私は箱の外にこれを実行するために管理していませんでしたが、私はPolly

0

この値はweb.configで設定できます。たとえば、特定の1ページのタイムアウトを変更するには:

<location path="somefile.aspx"> 
    <system.web> 
     <httpRuntime executionTimeout="180"/> 
    </system.web> 
</location> 

時刻は秒単位で指定します。

+0

それは私がすでに試みたことです。 did not work –

+0

MSDNのドキュメントによると、Debugがfalseに設定されている場合にのみ適用されます。 – Dharmindar

+0

ここにMSDNのドキュメントhttps://msdn.microsoft.com/en-us/library/e1f13641(v=vs.100).aspx – Dharmindar

-1

通常、まず最初にやるべきことは、configuration/system.web/sessionState @ timeout値を「90」のような値に変更することです。これは、アイドル時間の90分のウィンドウが経過するまで、ユーザーのセッションを維持することを意味します。

web.configファイルの変更:

... ...

ここで一緒に結び付けられている問題のカップルがあります: アプリケーションプールのワーカープロセスのデフォルトのアイドルタイムアウトは20分に設定されています セッション状態を保存する既定のモードはIISプロセスにあります

アプリケーションPoo lアイドルタイムアウト

アプリケーションプールの設定は、アプリケーションが割り当てられているアプリケーションプールの[詳細設定](IIS 7.5)をクリックすると表示されます。 < - イメージはここにあります - >

すべてのセッションがセッションタイムアウト期間全体にわたって持続するように、この値がセッションのタイムアウトに設定されていることを確認してください。 これら2つの値が互いに依存する理由は、セッション情報が実際にアプリケーションプールのワーカープロセス内に格納されているためです。つまり、何らかの理由でワーカープロセスがシャットダウンまたは強制終了した場合、セッション情報は失われます。

セッションストレージモード セッション情報を保存するモードがあります。

  • インプロセス(またはプロセスで) - デフォルト - 商店セッション情報は、は、StateServer
  • IISワーカープロセス内 - ストアでのセッション情報が別のプロセス(ASP.NET状態サービス)
  • のSQLServer - SQLデータベースに格納し、セッション情報

ワーカープロセスでセッション情報が失われる脆弱性があるのは、その状態がワーカープロセスに格納されている場合のみです。 StateServerとSQLServerの両方のモードは、ワーカープロセスのリセットによって影響を受けません。同様に、複数のIISサーバーでセッション状態を共有する必要がある場合は、StateServerモードとSQ​​LServerモードが唯一のオプションです。

+0

私はセッションの応答タイムアウトを制限しています –

関連する問題