2012-03-27 3 views
0

自分のユーザーアカウントで作成したローカルマシンにパブリックメッセージキューがあります。企業サービスアカウントの下で動作するローカルマシン上にWindowsサービスもあります。サービスアカウントがキューにフルアクセスできるようにしましたが、サービスが実行されているときにキューのメッセージを読み取れないようです。私は何か基本的なものが欠けているように感じますが、それが何であるか把握できませんでした。ローカルマシンのMSMQから読み取ることができません

コード:私は、コードをステップ実行すると_queueオブジェクトが作成された後

string queuePath = "FormatName:DIRECT=TCP:127.0.0.1\MyQueue"; 
MessageQueue _queue = new MessageQueue(queuePath); 

、CanReadプロパティは常にfalseです。私はキューのパスを設定するいくつかの異なる方法( "DIRECT = OS:。\ MyQueue"、 "PUBLIC = [guid]"、フォーマット名も使わずに)を試みましたが、何も成功しませんでした。

MSDN documentationには、キューが排他的な読み取りアクセスですでに開いている場合(または非排他的アクセスで開いており、このMessageQueueが排他アクセスを要求している場合)、またはアプリケーションに十分なアクセス権がない場合アクセスしてください。

私はアプリケーションに十分な権利があることを確認しましたが、他のものに「排他的な読み取りアクセス権」があるかどうかをどのように確認できますか?私は行方不明のものが他にありますか?

ありがとうございました。

+1

これは恥ずかしいものです。 _wrongサービスアカウントのACLを設定していたことがわかりました。私が正しいアカウントに変更すると、それは満足していました。ここで見ることは何もない、人々は、一緒に移動します。 – howcheng

答えて

1

なぜパブリックキューを使用していますか?プライベート(キューのアドレスはFORMATNAME:DIRECT=TCP:127.0.0.1\PRIVATE$\MyQueueに変更されます)としてキューを再作成し、問題が解決するかどうか確認してください。

私はMSMQを5年間使用しており、パブリックキューを一度も使用していません。私は彼らが何のためにいるのかを実際に理解していません。しかし経験から、それらを使用しようとする人は、通常、認証に関してはるかに困難を抱えています。

+0

これを確認できます。すべての場合において私たちは私的なqsと直接フォーマット名で終わった。 –

+1

パブリックキューとプライベートキューの違い:[リンク](http://msdn.microsoft.com/en-us/library/windows/desktop/ms706878%28v=vs.85%29.aspx)余分なADにリンクされたセキュリティと、キュー登録を一元的にバックアップする必要があります。私は全社的なシステムにプライベートキューを使用することはできません。 – howcheng

+1

http://stackoverflow.com/questions/1849989/private-or-public-msmq –

関連する問題