2010-12-20 13 views
0

よく知られているポートにリスニングソケットを作成するasp.netに座る必要があるコンポーネントがあります。私たちがソケットを持っている理由は、asp.netの必要コンポーネントが外部サービスからイベントを受け取る必要があり、他のテクノロジーが十分に速く柔軟ではなかったからです。asp.netでのソケットサービスのホスティング - application_startとapplication_endの問題

application_startで待機しているソケットを開始し、application_endでソケットを閉じます。問題は、Webサイトにhttpリクエストを受け取り、web.configを変更すると、application_endが呼び出される前にapplication_startイベントが呼び出されるため、ソケットを開くことができないためです(重複するソケットが開いているというエラーが表示されます)。 web.configの変更後に、application_start内の元のソケットへの参照がないので、そこからシャットダウンすることはできません。

この問題を回避する方法はありますか?

乾杯、

MRT

答えて

1

どのように聞いて開始する前にミューテックスを取得し、終了を聞いた後、それを解放について。そうすれば、以前のソケットがまだリッスンしていれば、ミューテックスは以前のソケットが閉じられるまでブロックします。

1

障害のあるアーキテクチャのように聞こえます。

Application_Startは、IISが新しいAppDomainを起動していて、使用する前に起動するため、Application_Endの前に実行されています。また、タイムスケジュールまたは多数の要求に基づいてアプリケーションプールのリサイクルを有効にする場合は、これも行います。

あなたはasp.netがやることをやりたいと思うようです。私は何をする必要があり、アプリケーションの状態(通常はデータベース)を更新し、あなたからasp.netアプリケーションを読み込ませるサービスを構築しようとします。

0

カスタムソケットのリスニングコードをaspから取り出します。ネット。 Windowsサービスを使用してこのソケットリスナーをホストし、必要に応じてasp.netを呼び出すことができます。いずれにせよ、あなたはそれほど問題が少ないでしょう。

+0

Theresはasp.netへの超高速エントリのための多くの選択肢ではありません。 asmx、wcfまたはmsmqのみ – MrT

関連する問題