1

IIS 7 で、外部プロバイダーによってホストされている ASP.NET MVC Web アプリケーションを使用しています。

送信する必要のある電子メールのバックログをチェックし、実際に送信するプロセスを 15 分程度ごとに実行したいと考えています。

これを行う通常の方法は Microsoft Message Queue を使用するようですが、これは直接制御できないホスト環境であるため、MSMQ をインストールまたは構成することはできません。

これまでのところ、SQL Server データベース (同じホスティング) のテーブルに行を追加することでそれを行うことにしました。

では、バックログをチェックしてメールを送信する部分をどのように実装すればよいでしょうか?

15 分ごとに再起動する、メインの Web アプリケーションの別のスレッドにする必要がありますか?

私が検討したもう 1 つのオプションは、適切な管理者パスワードで呼び出されると、電子メール送信者の反復を実行する HTTP-POST インターフェイスを開くことでした。

その後、15 分ごとにインターフェイスを呼び出す小さなコンソール アプリをローカル PC に作成できます。

最初のオプションはより単純ですが、2 番目のオプションはより堅牢な場合があります。

何か案は?

4

2 に答える 2

3

Quartz.NETをご覧になることをお勧めします。また、ASP.NET アプリケーションが使用されていない場合、Web サーバーは ASP.NET アプリケーションをメモリからアンロードする可能性があり、これは、生成されたすべてのスレッドが単に停止することを意味します。これが、このようなタスクを ASP.NET アプリケーションで実行するのではなく、Windows サービスでオフロードする必要がある理由の 1 つです。

于 2010-12-30T14:03:48.853 に答える
2

Jeff Atwood は、期限切れのキャッシュを使用してプロセスを定期的にリセットすることで、スタック オーバーフローのバッジ システムを最初に達成した方法について投稿しました。

https://blog.stackoverflow.com/2008/07/easy-background-tasks-in-aspnet/

私は過去にこれと似たようなことをして、毎日メールを送信しました。このサービスは必須ではありませんでした。メールが 1 日か 2 日遅れても、最終的には送信されるので問題ありませんでしたが、システムは非常にうまく機能していました。それはすべてasp.netなので、サーバー上のサービスにアクセスしたり、デスクトップからローカルトリガーを作成したりすることなく、私が使用するホスティング環境で正常に動作します。

于 2011-02-01T06:25:26.943 に答える