2007年07月25日

メッセージキューシステムへのアクセスが拒否されました。

   このエントリーをはてなブックマークに追加 Clip to Evernote
MSMQを使ったサービスぷ戸グラムを作成しサービスを起動したら、

「メッセージ キュー システムへのアクセスが拒否されました。」

というメッセージが出て、キューへのアクセスが出来ない。

サービスの起動アカウントを ローカルシステムからローカルなAdmin権限を持ったユーザに変えてみてもダメ。

ためしに、起動アカウントを通常ログオンしている開発用のドメインアカウントに変更すると、OKだ。

なんで、ローカルなAdministrator権限のユーザでダメなんだろう。

調べて分かったのは、Message Queueそのもののセキュリティ設定が絡んでいることが分かる。
たぶん、キューを作成したユーザには、フルアクセスの権限が与えられるのだけれど、それ以外のユーザには、Administratorなユーザであっても権限が付与されないということなのだろう。

コントロールパネル、コンピュータの管理の画面で、キューのセキュリティ設定に新たなユーザを追加して無事解決。  

Posted by gushwell at 22:02Comments(0)TrackBack(0)

2006年12月10日

MessageQueueのバグ?

   このエントリーをはてなブックマークに追加 Clip to Evernote
これってバグ?

 MessageQueue mq = new MessageQueue(QueueName);
mq.Formatter = new XmlMessageFormatter( new Type[] { typeof(System.String) });
mq.ReceiveCompleted += new ReceiveCompletedEventHandler(mq_ReceiveCompleted);
mq.BeginReceive(TimeSpan.FromSeconds(10.0));


...
void mq_ReceiveCompleted(object sender, ReceiveCompletedEventArgs e) {
IAsyncResult isr = e.AsyncResult;
if (isr.IsCompleted == false) {
// タイムアウトならここに来るはず
}
System.Messaging.Message msg = queue.EndReceive(e.AsyncResult);
...
}

マニュアルには、
このオーバーロードでタイムアウトを指定します。timeout パラメータで指定した間隔が経過すると、このコンポーネントは ReceiveCompleted イベントを発生させますが、操作に関連付けられた IAsyncResult の IsCompleted プロパティは false になります。メッセージが存在しないため、後続の EndReceive 呼び出しでは例外がスローされます。

と書いてあるけど、 タイムアウトになっても、IsCompleted プロパティは true のままみたいだ。

しかたないので、EndReceive で発生する例外をキャッチすることにした。  
Posted by gushwell at 15:24Comments(0)TrackBack(0)

2005年09月28日

MessageQueue.Create

   このエントリーをはてなブックマークに追加 Clip to Evernote
Microsoft .NET Framework SDK クイック スタート チュートリアルのメッセージキューのところの説明には、

必ずしも既存のキューを参照する必要はありません。このキューが存在しない場合は、自動的に作成されます。

とあります。この文章にだまされました。
いくらやっても、例外が発生して、送信ができません。なぜダメなのかその方法が
わかりません。
Googleで、「MessageQueue」を検索しても、この問題を解決してくれるページになかなかたどり付けません。

結局、解決してくれたのは、MSDNライブラリでした。

System.Messaging.MessageQueue.Create(@"myMachine\MyQueue");

とメッセージキューを明示的に作成しないとダメみたいです。
では、上記のクイック スタート チュートリアルの文章はなんだったんでしょうか。
・.NET Framework V1.0 では、これが正しかった。
・説明の誤り
・僕の文書読解能力の問題
どれなんでしょうか。
  
Posted by gushwell at 21:13Comments(0)TrackBack(0)