我编写了一个从邮件队列中读取的 Web服务。 这在Cassini下工作正常。
现在我已经在IIS下部署了服务,当服务尝试访问队列时,我收到一条错误消息:
队列不存在或您没有足够的权限来执行操作。
我已将IIS虚拟目录上的匿名访问用户设置为我自己的域帐户,该帐户是本地计算机上管理员组的成员。我已经为队列授予了相同的用户完全权限,以及NETWORK SERVICE和ASPNET。
我仍然收到相同的错误消息。
我还尝试在虚拟目录上禁用匿名访问并使用我自己的登录详细信息连接到服务 - 但无济于事。
非常感谢任何有关此问题的帮助!
我也尝试了各种组合:
和 testUsr对队列具有完全权限。我在C:\
上的MSMQ商店文件夹中添加了用户和ASPNET的权限答案 0 :(得分:5)
我对该问题的理解是,尝试执行代码的过程在IIS下运行的是一个不同于Cassini的帐户。
问题在于,无论我冒充哪个用户 - 我总是得到相同的错误消息 - 即使用户是本地和域管理员组的成员,并且此用户对队列具有完全权限。即几乎不可能为用户分配更多权利。
事实证明,使用FormatName作为队列而不是路径名(myMachine \ queueName)已经解决了问题......
FORMATNAME:DIRECT = OS:MYMACHINE \ myQueue中
我不确定为什么会这样。阅读已经表明,当使用路径名时,有必要进行AD查找,虽然我认为我一直在测试的用户应该有权这样做,但也许有些东西丢失了。
然而,眼前的问题已经解决,这对我来说已经足够了。