質問

web.configファイルに実行時間を設定しようとしました:

<compilation debug="false" targetFramework="4.5">
<httpRuntime executionTimeout="30"/>
.

IIS Managerリクエストを見ると、30秒後に要求が終了していないことがわかります。
IHTTPASynchandlerの中にタイマーを実装する必要がありますか?

役に立ちましたか?

解決

IhttpAsynchandlerタイムアウトのための内蔵サポートの明らかな欠如で、おそらくあなた自身のタイムアウトを管理する必要があります。おそらくこれは設計によるものです。すべてのあなたが非同期パターンを選択しています - MSFTを実行しているのは、長期実行タスクのデフォルトのタイムアウトを設定しようとしているのですか?

私がすることは適切なタイムアウトでポーリングを管理するため。これは私が返さないWebサービスを待たないようにするコードサンプルです:

private const int REQUEST_TIMEOUT = 30000;   // miliseconds (30 sec)
private void CallService()
        {
        try {
             string url = "somewebservice.com";
             WebRequest request = WebRequest.Create(url);

             // Asynchronously fire off the request
             IAsyncResult result = request.BeginGetResponse(new AsyncCallback(MyRoutineThatUsesTheResults), request);

             // Handle timed-out requests
             ThreadPool.RegisterWaitForSingleObject(result.AsyncWaitHandle, new WaitOrTimerCallback(RequestTimeout), request, REQUEST_TIMEOUT, true);
         }
         catch (Exception ex) {
              _logger.Error("Error during web service request.", ex);
         }

private void RequestTimeout(object state, bool timedOut)
        {
            if (timedOut) {
                WebRequest request = (WebRequest)state;
                _logger.WarnFormat("Request to {0} timed out (> {1} sec)", request.RequestUri.ToString(), REQUEST_TIMEOUT / 1000);
                request.Abort();
            }
        }
.

このアプローチで働くためにIasyncResultを必要とするでしょうが、それが確立されたパターンです。

また、IISがApp Pool / App Domainをリサイクルすることを決定したときに問題に遭遇します。それがあなたが扱う条件であるならば、あなたは hostingenvironment.registerObject

他のヒント

web.configファイルにこれを追加しようとすることができます。

<system.web>
  <pages asyncTimeout="30" />
</system.web>
.

PageAsyncTaskの場合は、IHttpAsyncHandlerについても尊重される可能性がありますか?

そうでない場合は、HttpTaskAsyncHandler 4.5バージョンの新しいASP.Netを使用することができます。

registerasynctaskを使用する必要があるのは、以下のリンクを確認してください

> http://msdn.microsoft.com/en-us/magazine/CC163725.aspx

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top