无法从Asp.Net应用程序连接到RabbitMq

时间:2015-11-20 20:07:21

标签: windows iis-7 rabbitmq windows-server-2012 application-pool

我有一个与RabbitMq交互的asp.net mvc应用程序。一切都在当地很有效。

但是,在我们的部署服务器上,它无法连接

DEBUG|MassTransit.RabbitMqTransport.Integration.RabbitMqConnectionCache|Connecting: muyuser@localhost:5672/|
ERROR|MassTransit.RabbitMqTransport.RabbitMqReceiveTransport|RabbitMQ connection failed: Connect failed: muyuser@localhost:5672/|

我能收集的是这个

  • 要连接到RabbitMq,您需要在(在Windows上)有效的.erlang.cookie用户root
  • 我可以告诉你,这个cookie是在你安装rabbitmq
  • 时创建的
  • 在开发中,我们使用localdb作为开发人员的用户(具有此cookie)运行
  • 在生产环境中,应用程序使用IIS运行,该IIS使用应用程序池和内置的ApplicationPoolIdentity帐户。其中没有.erlang.cookie文件的用户文件夹。

所以问题变成......现在怎么样?这是如何工作的?

显然,我们可以为Web应用程序创建一个专用用户,但我们的系统管理员可以理解非常不愿意这样做。

另一个线索是,当我尝试使用RDP时,以我自己的身份登录并连接到兔子我发现我不能。排除故障后,我发现我的cookie与其他人的cookie不匹配!我将其替换为来自c:\windows\.erlang.cookie的那个,然后可以从cli连接。似乎有可能为应用程序池身份安装某处的cookie,但它是一个不正确的cookie。它的位置是什么?

1 个答案:

答案 0 :(得分:1)

Erlang cookie用于节点间通信,无论是用于群集RabbitMQ还是用于通过命令行使用rabbitmqctl联系RabbitMQ。

如果您遇到AMQP连接问题,那么erlang cookie 与此无关

查看访问控制https://www.rabbitmq.com/access-control.html,了解您的用户是否配置正确。

同时检查服务器日志以查看连接被拒绝的原因。