【发布时间】:2012-04-11 08:06:25
【问题描述】:
我在本地计算机上有一个使用我的用户帐户创建的公共消息队列。我的本地计算机上也有一个 Windows 服务,该服务在公司服务帐户下运行。我已授予服务帐户对队列的完全访问权限,但是当服务运行时,它似乎无法读取队列中的消息。我觉得我错过了一些相当基本的东西,但我无法弄清楚它是什么。
代码:
string queuePath = "FormatName:DIRECT=TCP:127.0.0.1\MyQueue";
MessageQueue _queue = new MessageQueue(queuePath);
当我单步执行代码时,在创建 _queue 对象后,CanRead 属性始终为 false。我尝试了几种不同的方法来设置队列路径(“DIRECT=OS:.\MyQueue”、“PUBLIC=[guid]”,并且也没有使用格式名称),但都没有成功。
MSDN documentation 声明“如果队列已经以独占读取访问权限打开(或者如果它以非独占访问权限打开并且此 MessageQueue 请求独占访问),或者如果应用程序没有足够的权限,则 CanRead 为 false访问它。”
我已经确保应用程序具有足够的权限(我认为),但是我如何判断其他东西是否具有“独占读取权限”呢?我还有什么遗漏的吗?
谢谢。
【问题讨论】:
-
嗯,这很尴尬。原来我为错误的服务帐户设置了 ACL。一旦我将其更改为正确的帐户,它就很高兴。这里没什么可看的,伙计们,继续前进。