2

私は私のような状況を見たことがなかったので、ここに行きます:

シナリオのハイライト: ユーザーは、カスタム SMS アラートを含むシステムを望んでいます。この機能のコンポーネントは、ユーザー入力に基づいて開始を識別し、トリガー後に事前定義された間隔に従って、パーソナライズされたメッセージを含む SMS を送信する方法を持つことです。私は以前に Twilio を使用したことがなく、実装をいじっています。

ファースト パス ソリューション: Twilio アカウントを使用して、インバウンド トリガー アラート/SMS を GET 経由で受信する .aspx を指定しました。受信ページは、ページ読み込み内で SMSAlerter オブジェクトを宣言してインスタンス化します。これは、最初の SMS ですぐに応答し、System.Timer.Timer を開始します。初歩的で、ある程度機能的です。

問題: タイマーの間隔が短い場合、アラートが引き続き送信されます。1 分間隔でテストしたところ、成功しました。10 分に行ったとき、すぐに SMS が送信され、10 分後に最初のメッセージが送信されますが、その後は何も送信されません。

私の観察: 受信テキストの後にリソースとのやり取りがないため、デフォルトの 20 分のままにしておくとセッションがタイムアウトします。セッション タイムアウトを増やしても機能しません。間隔が分単位ではなく時間単位になるため、正しくないように見えます。

Cache を使用して新しい SMSAlerter をそれぞれ保存するのがよい方法かもしれません。作成された SMSAlerter の場合、スケジュールは約 12 時間使用され、翌日同じユーザーがシステムに通知すると、新しい SMSAlerter オブジェクトに置き換えられます。より良い方法はありますか?私は単純化しすぎていますか?現在、大量のトラフィック (数十人のユーザー) は予想していませんが、ユーザーは大きなことを考えています。

コメント、提案ありがとうございます。問題は構文ではなく設計に関するものであるため、コードは含めませんでした。

4

1 に答える 1

1

元のリクエストから約20分後にタイマーが範囲外になり、タイマーが停止したと思います。aspx ページを更新し続ければ問題は起こらないと思いますが、明らかにそれはあまり役に立ちません。

System.Timers.Timer オブジェクトを持つ新しいスレッドを起動して、サーバーへのフォローアップ リクエストがない場合に有効なままにし、スコープ外に出ないようにすることができます。しかし、これは正直に言うと良い考えではありません - 問題を理解するのに役立つかもしれません.

最終的には、なんらかの継続的に実行されるサービスが必要になります。これはアプリ プールに依存したくないためです。そのため、バックグラウンドで実行されている Windows サービスを使用して処理することをお勧めします。これが適切です。長期的な解決のために。

お役に立てれば!

(Windowsサービスの側面をより明確にするために少し編集されています)

于 2013-03-27T16:53:50.070 に答える