【发布时间】:2016-04-07 17:55:48
【问题描述】:
我正在使用以下代码连接到 RabbitMQ
factory.UserName = "userid";
factory.Password = "mypass@25";
factory.VirtualHost = "/filestream";
factory.Port = AmqpTcpEndpoint.UseDefaultPort;
factory.HostName = "myrabbitserver";
return factory.CreateConnection();
我想将连接设置更改为以下格式:
amqp://userid:mypass@25@myrabbitserver:5672/filestream
我的密码包含 @ 字符,因此我无法传递 URI
var factory = new ConnectionFactory();
factory.Uri = "amqp://userid:mypass@25@myrabbitserver:5672/filestream";
我最终手动提供工厂的每个属性。有没有一种方法可以告诉 RabbitMQ 我的密码有@,方法如下?
factory.Uri = "amqp://userid:"mypass@25"@myrabbitserver:5672/filestream";
如果我尝试将密码中的@更改为%40,获取连接时会报错
None of the specified endpoints were reachable
【问题讨论】:
-
也许使用 %40 作为@符号?
factory.Uri = "amqp://userid:mypass%4025%40myrabbitserver:5672/filestream";?或者,也可以在字符串上调用 UrlEncode 方法并将其分配给factory.Uri,例如factory.Uri = HttpUtlility.UrlEncod(<uriString>);。第二种方法的优点是可以转义 Uri 中的所有特殊字符。 -
我也试过了,但是如果我添加任何特殊字符或编码,它不允许为 Uri 设置值;
-
在密码中对
@使用 %40 怎么样,而不是在 amqp uri 规范中使用@怎么样? -
我不知何故认为这是 RabbitMQ 的问题,但不是格式化;但我已经试过了