2009-09-09 12 views
7

私はnetMsmqBindingでWCFサービスを持っています。私のクライアントは自分のキューにメッセージを送ることができます。サービスが実行されているときに、キューからメッセージを期待どおりに取得します。サービスが実行されていない場合、受信したメッセージはサービスが開始されるまでキューに入れられます。IISサービスとのWCF MSMQバインディング - サービスをインスタンス化する方法?

私の問題は、メッセージがキューにヒットしたときにサービスが開始しないことです。このサービスはIISでホストされているため、IISが要求を受け取るまでインスタンス化されません。私がサービスを参照すると、キュー内のメッセージが処理されますが、明らかにこれはキューを処理する方法ではありません。

サービスの実装を変更するか、IISの設定を変更する必要があると思いますが、変更する場所や変更する内容がわかりません。

UPDATE

誰もが実際にWCFの上にMSMQを使用していますか?私はこれを短時間の間働いていました。私はと同じサーバー上の異なったウェブサイト上のバインディングを奇妙に有効にしましたが、今何とかやり直してしまいました。

私が抱えている唯一の問題は、キューにメッセージがあるときのサービスのアクティブ化です。現在、キューは、サービスがインスタンス化されるときにのみ処理される。私が.svcファイルをブラウズするとき。私はnet.msmqプロトコルをアプリケーションで有効にしています。サイト上でnet.msmqバインディングを有効にしています...他に何かする必要がありますか?

答えて

5

HTTP非アクティブ化のためにIISを明示的に設定する必要があります。私は頭の上のすべての詳細を知っているわけではありませんが、基本的にappcmdを使ってnet.msmqバインディングの有効化を設定して有効にする必要があります。

this blogpostまたはthis screencastにすべての詳細を示す必要があります。

2

私はWCFの上に結合MSMQを使用して、私の問題は、主にIISの周りにあったと信じています。

私はうまく機能IIS 7.5のすべてでWindows 7またはServer 2008を使用してIIS 6で

をWindowsのXP/Server 2003を使用して問題のない終わりがありませんでした。

MSMQをIISの代わりに管理サービス/ Windowsサービスまたはスタンドアロンアプリケーションとして実行することをお勧めします。

0

これをWindowsサービスとしてホストすることもできます。メッセージはキューに置かれたときにIISが自動的にWASをアクティブ化しないためです。
別のオプションは、指定した時間間隔の後にこのサービスにpingを実行する簡単なWindowsサービスを作成することです。 IsOneWay = trueのない同じサービス()の別の契約が公開されました(この操作はキューと対話しないため)。その後、WASプロセスが常にアクティブであり、キューにメッセージがあるとすぐにWCFがメッセージをピックアップするように、指定された時間間隔の後にWCFサービスURLをpingするWindowsサービスを作成しました。

また、サービスもhttp & net.msmqでホストされていることを確認してください。

Netを使用してMSMQを使用してWCFを実装するためのステップバイステップガイドとして素晴らしい記事が出ました。Msmq結合:
Setup MSMQ with WCF using Net.Msmq binding

関連する問題