我编写了一个从消息队列读取的网络服务。 这在卡西尼号下工作得很好。
现在我已经在 IIS 下部署了该服务,当该服务尝试访问队列时我收到一条错误消息:
队列不存在或您没有足够的权限来执行该操作。
我已将 IIS 虚拟目录上的匿名访问用户设置为我自己的域帐户,该帐户是本地计算机上管理员组的成员。我已授予该用户对队列以及 NETWORK SERVICE 和 ASPNET 的完全权限。
我仍然收到相同的错误消息。
我还尝试禁用虚拟目录上的匿名访问并使用我自己的登录详细信息连接到服务 - 但没有成功。
任何有关此问题的帮助将不胜感激!
<小时/>我还尝试了以下各种组合:
和 testUsr 对队列具有完全权限。我已在 C:\
上的 MSMQ 存储文件夹上添加了用户和 ASPNET 的权限最佳答案
我对问题的理解是,尝试执行代码的进程在 IIS 下与 Cassini 下以不同的帐户运行。
问题是,无论我模拟哪个用户 - 我总是收到相同的错误消息 - 即使该用户是本地和域管理员组的成员,并且该用户对队列具有完全权限。即几乎不可能为用户分配更多权限。
事实证明,使用队列的 FormatName 而不是路径名 (myMachine\queueName) 解决了问题...
格式名称:DIRECT=操作系统:myMachine\myQueue
我不确定到底为什么会出现这种情况。阅读表明,当使用路径名时,有必要进行 AD 查找,虽然我认为我测试的用户应该有权这样做,但也许缺少一些东西。
但是眼前的问题已经解决了,这对我来说已经足够了。
关于asp.net - 从 ASP .Net Web 服务访问 MSMQ 时出现权限错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/734417/