我的设置
ServerA使用本地IIS应用程序在IIS 7上运行Web应用程序 池身份。
ServerB正在运行MSMQ,托管专用队列 我们打电话给MyQueue
在ServerB上使用消息队列管理单元,我已将MyQueue配置为向ServerA的域帐户(ServerA $)以及ANONYMOUS LOGON用户授予完全控制权
我想要发生什么
我希望ServerA上的Web应用程序向ServerB上的MyQueue发送消息
实际发生的事情
消息从未出现在ServerB上,我没有收到任何错误消息。我已经启用了负面源日记功能,并且可以看到我正在访问“拒绝访问”#34;死信队列中的错误。
如果我向所有人授予完全控制权,则会显示该消息,但我不想这样做。
为什么我认为这会起作用
此article about IIS Application Pool Identities表示
在域环境中使用网络服务帐户非常棒 效益。作为网络服务运行的工作进程访问网络 作为机器帐户。机器帐户是在机器上生成的 加入了一个域名。它们看起来像这样:
domainname \ machinename $,
例如:
mydomain \ machine1 $关于这一点的好处是网络资源 像文件共享或SQL Server数据库可以进行ACL以允许此操作 机器帐户访问。
申请泳池身份有哪些?
好消息是应用程序池标识也使用该机器 帐户访问网络资源。无需进行任何更改。
基于该信息,我假设在MyQueue上授予MY_DOMAIN \ _SERVERA $权限,那么事情应该有效。但他们不是。
知道我做错了吗?
答案 0 :(得分:3)
这个问题现在已经老化,但我已经设法使用ApplicationPoolIdentity用户从IIS应用程序查询MSMQ:
IIS APPPOOL\{application pool name from step 1}
。这应该自动完成应用程序池的名称最好避免授予 Everyone 的权限。
答案 1 :(得分:0)
我刚刚发现了这个问题并且在我的案例中找到了解决方案,如果我设置IIS作为网络服务帐户运行,远程队列将收到我结束的消息。
这已占用了我今天的很多时间,现在我需要解决一下如果运行IIS作为网络服务实际上是好的并且不会破坏其他任何东西。