0

共有ホスティングで MVC 3 アプリケーションを実行していますが、ユーザーを待たせてはいけない多くの処理を必要とするページがいくつかあります。(例: 添付ファイル付きの数百のメールを送信し、データベースに数千のレコードを作成します。)

今、私はこれを達成する方法を尋ねているのではありません。アプリケーションがたとえば 60 秒間操作を実行している場合、アプリケーションが停止するリスクはありますか?

もしそうなら、それを防ぐために何ができますか (アプリケーションが完全な信頼で実行できないことを知っています)?

4

3 に答える 3

1

あなたは共有ホスティングを利用しているので、HostingEnvironment.IncreaseBusyCountDecreaseBusyCountを調べてみてください。

また、HostingEnvironment.RegisterObjectを確認することもできます。これにより、アプリケーションが停止する前に、何が起こっていてもキャンセルすることができます。

そうは言っても、私はこれらのいずれも試していません。特に信頼できるものではないかもしれません。この記事は、なぜサイト内からこれを行うのが良い考えではないのかという点にかなり関連しています。

于 2012-04-25T21:33:42.127 に答える
1

I've used Task for this, something like

Task.Factory.StartNew(() => this.SendRequestApprovedNotification(requestId, 
    userName, 
    comments));

One problem I ran into was I was naively passing the request object through to the task. Don't do this, instead copy out the bits you need and pass those down, as, by the time you could to use the request object the pipeline may have disposed it.

于 2012-04-25T21:37:24.677 に答える
0

web.config からリクエストの実行時間を制御できます。

  <location path="Controller/ProcessFile">
    <system.web>
      <httpRuntime executionTimeout="900" />
    </system.web>
  </location>

executionTimeout - 許容時間 (秒)

ただし、共有ホスティングではなく、専用サーバーで使用しています。

于 2012-04-25T21:22:33.403 に答える