我有一个与RabbitMq交互的asp.net mvc应用程序。一切工作在当地很好。无法从Asp.Net应用程序连接到RabbitMq
但是,我们的部署服务器无法连接
DEBUG|MassTransit.RabbitMqTransport.Integration.RabbitMqConnectionCache|Connecting: [email protected]:5672/|
ERROR|MassTransit.RabbitMqTransport.RabbitMqReceiveTransport|RabbitMQ connection failed: Connect failed: [email protected]:5672/|
什么,我能够收集到这是
- 为了连接到RabbitMQ的,你需要一个有效的
.erlang.cookie
(在Windows )你的用户根 - 尽我所知,这个cookie是在你安装rabbitmq时创建的
- 在开发中我们使用的是localdb,它以d eveloper的用户(拥有此cookie)
- 在生产中,应用程序运行的IIS使用应用程序池和内置
ApplicationPoolIdentity
帐户。其中没有用于生成.erlang.cookie
文件的用户文件夹。
所以问题变成了......现在呢?这是如何工作的?
显然我们可以为web应用程序创建一个专用的用户,但我们的系统管理员可以理解地很不愿意这样做。
另一个线索是,当我尝试RDP时,以自己身份登录并连接到兔子,我发现我不能。在排除故障后,我发现我的cookie与其他人的cookie不匹配!我用c:\windows\.erlang.cookie
替换它,然后可以从cli连接。似乎有可能在那里是安装了一个cookie 某处为应用程序身份但它是一个不正确的cookie。它将去的地点是什么?
Erlang需要cookie来启动rabbitmq--但是,这不需要从客户端连接到代理。你能澄清erlang/rabbitmq是如何启动的吗?还要说明你正在使用哪个客户端。 – theMayer
@theMayer rabbitmq正在作为一个Windows服务启动(它安装的标准方式)。我正在使用使用[RabbitMQ.Client](https://www.nuget.org/packages/RabbitMQ.Client/)库的[MassTransit](http://masstransit-project.com/)进行连接。 –
也@theMayer我不知道“erlang需要cookie启动rabbitmq”广场与我的经验。当我的用户文件夹中有错误的cookie时,rabbit mq已经在运行,同事可以连接到它,但是我不能。更新我的'.erlang.cookie'允许我连接 –