3

メッセージキューから読み取るWebサービスを作成しました。これはカッシーニの下でうまく機能します。

IISでサービスを展開したので、サービスがキューにアクセスしようとするとエラーメッセージが表示されます。

キューが存在しないか、操作を実行するための十分な権限がありません。

IIS仮想ディレクトリの匿名アクセスユーザーを、ローカルマシンの管理者グループのメンバーである自分のドメインアカウントに設定しました。これと同じユーザーに、ネットワークサービスとASPNETだけでなく、キューに対する完全なアクセス許可を付与しました。

それでも同じエラーメッセージが表示されます。

また、仮想ディレクトリでの匿名アクセスを無効にし、自分のログイン情報を使用してサービスに接続しようとしましたが、役に立ちませんでした。

この問題の助けは大歓迎です!


また、次のさまざまな組み合わせを試しました。

testUsrがキューに対する完全な権限を持っている場合。C:\のMSMQストアフォルダーにユーザーとASPNETのアクセス許可を追加しました

4

1 に答える 1

5

私が理解している問題は、コードを実行しようとしているプロセスが IIS では Cassini とは異なるアカウントで実行されているということです。

問題は、偽装したユーザーに関係なく、ユーザーがローカルおよびドメイン管理者グループのメンバーであり、このユーザーがキューに対する完全なアクセス許可を持っている場合でも、常に同じエラー メッセージが表示されることでした。つまり、ユーザーにより多くの権利を割り当てることはほとんど不可能です。

パス名 (myMachine\queueName) ではなく、キューに FormatName を使用することで問題が解決したことがわかりました...

FormatName:DIRECT=OS:myMachine\myQueue

なぜそうなるのか正確にはわかりません。調べてみると、パス名が使用されている場合、AD ルックアップが必要であることがわかりました。私がテストしたユーザーにはこれを行う権限があるはずですが、何か不足している可能性があります。

しかし、当面の問題は解決され、それで十分です。

于 2009-04-14T09:58:31.843 に答える