所以这是连接代码。
var factory = new ConnectionFactory
{
HostName = "myserver",
UserName = "testuser",
Password = "testuserpassword"
};
using (var connection = factory.CreateConnection())
using (var channel = connection.CreateModel())
{
channel.QueueDeclare(queue: "LOG",
durable: false,
exclusive: false,
autoDelete: false,
arguments: null);
string message = "Hello World!";
var body = Encoding.UTF8.GetBytes(message);
channel.BasicPublish(exchange: "",
routingKey: "LOG",
basicProperties: null,
body: body);
Console.WriteLine(" [x] Sent {0}", message);
}
我在一个控制台应用程序中测试它,一切正常,我可以发送和接收消息。
如果我然后将上面相同的代码复制并粘贴到我的WPF应用程序中,我会在这里得到一个例外
connection = factory.CreateConnection()
异常
抛出异常:' System.ArgumentException'在RabbitMQ.Client.dll
中其他信息:myserver无法解析IP地址
如果我改变了#34; myserver"到服务器IP我得到了同样的错误。 不明白为什么代码在一个应用程序中工作而不在另一个应用程序中。
答案 0 :(得分:6)
问题解决了。它看起来像Exception设置一样简单。由于某种原因,控制台应用程序设置为不中断连接异常,并且WPF应用程序设置为中断。一切现在都有效。
奇怪的是,正在生成异常,特别是关于不解析服务器名称或IP地址,但它仍然有效。
答案 1 :(得分:1)
我遇到了这个问题-我认为与异常设置无关。
答案 2 :(得分:0)
这样做是因为异常设置,如果您查看RMQ .net客户端源代码,一开始它将尝试将您的IP地址与IPv6协议连接,如果您要连接IPv4地址,则此步骤将失败并抛出System.ArgumentException:无法为“您的IP地址”解析IP地址,但是RMQ .net客户端将捕获此异常,并继续尝试将您的IP地址与IPv4协议连接。
Output
formatter now from Json ==> 30/12/2019
formatter now from Json replace / symbol to - symbol ==> 30-12-2019
formatter yourDate from Json Result after parse string to date ==> 23-12-2018
formatter showDate from Json Result after parse string to date ==> December, 23 2018
如果设置为中断连接异常,则强制ArgumentException引发。
if (ShouldTryIPv6(endpoint))
{
try {
m_socket = ConnectUsingIPv6(endpoint, socketFactory, connectionTimeout);
} catch (ConnectFailureException)
{
m_socket = null;
}
}
if (m_socket == null && endpoint.AddressFamily != AddressFamily.InterNetworkV6)
{
m_socket = ConnectUsingIPv4(endpoint, socketFactory, connectionTimeout);
}
答案 3 :(得分:0)
我通过在Visual Studio中禁用我的代码并运行该应用程序解决了 CreateConnection 问题。首先,我被指出了错误的方向,因为Masstransit在网络库中在功能上使用了throw。这让我感觉到我的配置设置错误或我的服务未运行,因此无法访问。
在顽固的额外F5之后,我收到一个错误,提示无法加载程序集 System.Threading.Tasks.Extensions 。我为此添加了绑定重定向,并且一切正常运行:
int