3

我编写了一个从消息队列中读取的 Web 服务。这在卡西尼下运行良好。

现在我已经在 IIS 下部署了服务,当服务尝试访问队列时我收到一条错误消息:

队列不存在或您没有足够的权限来执行该操作。

我已将IIS虚拟目录上的匿名访问用户设置为我自己的域帐户,该帐户是本地计算机上管理员组的成员。我已授予同一用户对队列以及 NETWORK SERVICE 和 ASPNET 的完全权限。

我仍然收到相同的错误消息。

我还尝试禁用对虚拟目录的匿名访问并使用我自己的登录详细信息连接到服务 - 无济于事。

任何有关此问题的帮助将不胜感激!


我还尝试了以下各种组合:

并且 testUsr 对队列具有完全权限。我在 C:\ 上的 MSMQ 存储文件夹中添加了用户和 ASPNET 的权限

4

1 回答 1

5

我对这个问题的理解是,尝试执行代码的进程在 IIS 下作为与 Cassini 下不同的帐户运行。

问题在于,无论我模拟的是哪个用户——我总是收到相同的错误消息——即使该用户是本地和域管理员组的成员,并且该用户对队列具有完全权限。即几乎不可能为用户分配更多权限。

事实证明,使用队列的 FormatName 而不是路径名 (myMachine\queueName) 解决了问题......

FormatName:DIRECT=OS:myMachine\myQueue

我不确定为什么会这样。阅读表明,当使用路径名时,有必要进行 AD 查找,尽管我认为我一直在测试的用户应该有权执行此操作,但也许缺少一些东西。

然而,眼前的问题得到了解决,这对我来说已经足够了。

于 2009-04-14T09:58:31.843 回答