C#netcore应用程序无法解析Docker Windows容器中的Rebus.Bus.IBus
我有一个简单的netcore 3.0控制台应用程序,使用REBS(v7.1.0)初始化与Azure Service Bus的连接。我构建了一个独立的应用程序,然后在我的笔记本电脑和办公室的另一台电脑上运行它C#netcore应用程序无法解析Docker Windows容器中的Rebus.Bus.IBus,c#,docker,asp.net-core,rebus-azureservicebus,C#,Docker,Asp.net Core,Rebus Azureservicebus,我有一个简单的netcore 3.0控制台应用程序,使用REBS(v7.1.0)初始化与Azure Service Bus的连接。我构建了一个独立的应用程序,然后在我的笔记本电脑和办公室的另一台电脑上运行它 问题: [INF] Rebus.AzureServiceBus.AzureServiceBusTransport (Thread #1): Initializing Azure Service Bus transport with queue "blablabla" [INF] Rebus
问题:
[INF] Rebus.AzureServiceBus.AzureServiceBusTransport (Thread #1): Initializing Azure Service Bus transport with queue "blablabla"
[INF] Rebus.Bus.RebusBus (Thread #1): Bus "Rebus 1" stopped
Could not resolve Rebus.Bus.IBus with decorator depth 0 - registrations: Rebus.Injection.Injectionist+Handler
Microsoft.Azure.ServiceBus.ServiceBusException: No such host is known.
---> System.Net.Http.HttpRequestException: No such host is known.
---> System.Net.Sockets.SocketException (11001): No such host is known.
at System.Net.Http.ConnectHelper.ConnectAsync(String host, Int32 port, CancellationToken cancellationToken)
--- End of inner exception stack trace ---
at System.Net.Http.ConnectHelper.ConnectAsync(String host, Int32 port, CancellationToken cancellationToken)
at System.Net.Http.HttpConnectionPool.ConnectAsync(HttpRequestMessage request, Boolean allowHttp2, CancellationToken cancellationToken)
at System.Net.Http.HttpConnectionPool.CreateHttp11ConnectionAsync(HttpRequestMessage request, CancellationToken cancellationToken)
at System.Net.Http.HttpConnectionPool.GetHttpConnectionAsync(HttpRequestMessage request, CancellationToken cancellationToken)
at System.Net.Http.HttpConnectionPool.SendWithRetryAsync(HttpRequestMessage request, Boolean doRequestAuth, CancellationToken cancellationToken)
at System.Net.Http.RedirectHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
at System.Net.Http.HttpClient.FinishSendAsyncBuffered(Task`1 sendTask, HttpRequestMessage request, CancellationTokenSource cts, Boolean disposeCts)
at Microsoft.Azure.ServiceBus.Management.ManagementClient.SendHttpRequest(HttpRequestMessage request, CancellationToken cancellationToken)
--- End of inner exception stack trace ---
at Microsoft.Azure.ServiceBus.Management.ManagementClient.SendHttpRequest(HttpRequestMessage request, CancellationToken cancellationToken)
at Microsoft.Azure.ServiceBus.Management.ManagementClient.GetEntity(String path, String query, Boolean enrich, CancellationToken cancellationToken)
at Microsoft.Azure.ServiceBus.Management.ManagementClient.GetQueueAsync(String queuePath, CancellationToken cancellationToken)
at Microsoft.Azure.ServiceBus.Management.ManagementClient.QueueExistsAsync(String queuePath, CancellationToken cancellationToken)
at Rebus.AzureServiceBus.AzureServiceBusTransport.<>c__DisplayClass30_0.<<InnerCreateQueue>b__1>d.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at Rebus.Internals.AsyncHelpers.CustomSynchronizationContext.<Run>b__7_0(Object _)
at Rebus.Internals.AsyncHelpers.CustomSynchronizationContext.Run()
at Rebus.Internals.AsyncHelpers.RunSync(Func`1 task)
at Rebus.AzureServiceBus.AzureServiceBusTransport.InnerCreateQueue(String normalizedAddress)
at Rebus.AzureServiceBus.AzureServiceBusTransport.Initialize()
at Rebus.Config.RebusConfigurer.<>c__DisplayClass13_0.<Start>b__27(IResolutionContext c)
at Rebus.Injection.Injectionist.Resolver`1.InvokeResolver(IResolutionContext context)
at Rebus.Injection.Injectionist.ResolutionContext.Get[TService]()
应用程序仅在docker容器中运行的第二台计算机上抛出错误(请参见下文)
我所尝试的:
[INF] Rebus.AzureServiceBus.AzureServiceBusTransport (Thread #1): Initializing Azure Service Bus transport with queue "blablabla"
[INF] Rebus.Bus.RebusBus (Thread #1): Bus "Rebus 1" stopped
Could not resolve Rebus.Bus.IBus with decorator depth 0 - registrations: Rebus.Injection.Injectionist+Handler
Microsoft.Azure.ServiceBus.ServiceBusException: No such host is known.
---> System.Net.Http.HttpRequestException: No such host is known.
---> System.Net.Sockets.SocketException (11001): No such host is known.
at System.Net.Http.ConnectHelper.ConnectAsync(String host, Int32 port, CancellationToken cancellationToken)
--- End of inner exception stack trace ---
at System.Net.Http.ConnectHelper.ConnectAsync(String host, Int32 port, CancellationToken cancellationToken)
at System.Net.Http.HttpConnectionPool.ConnectAsync(HttpRequestMessage request, Boolean allowHttp2, CancellationToken cancellationToken)
at System.Net.Http.HttpConnectionPool.CreateHttp11ConnectionAsync(HttpRequestMessage request, CancellationToken cancellationToken)
at System.Net.Http.HttpConnectionPool.GetHttpConnectionAsync(HttpRequestMessage request, CancellationToken cancellationToken)
at System.Net.Http.HttpConnectionPool.SendWithRetryAsync(HttpRequestMessage request, Boolean doRequestAuth, CancellationToken cancellationToken)
at System.Net.Http.RedirectHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
at System.Net.Http.HttpClient.FinishSendAsyncBuffered(Task`1 sendTask, HttpRequestMessage request, CancellationTokenSource cts, Boolean disposeCts)
at Microsoft.Azure.ServiceBus.Management.ManagementClient.SendHttpRequest(HttpRequestMessage request, CancellationToken cancellationToken)
--- End of inner exception stack trace ---
at Microsoft.Azure.ServiceBus.Management.ManagementClient.SendHttpRequest(HttpRequestMessage request, CancellationToken cancellationToken)
at Microsoft.Azure.ServiceBus.Management.ManagementClient.GetEntity(String path, String query, Boolean enrich, CancellationToken cancellationToken)
at Microsoft.Azure.ServiceBus.Management.ManagementClient.GetQueueAsync(String queuePath, CancellationToken cancellationToken)
at Microsoft.Azure.ServiceBus.Management.ManagementClient.QueueExistsAsync(String queuePath, CancellationToken cancellationToken)
at Rebus.AzureServiceBus.AzureServiceBusTransport.<>c__DisplayClass30_0.<<InnerCreateQueue>b__1>d.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at Rebus.Internals.AsyncHelpers.CustomSynchronizationContext.<Run>b__7_0(Object _)
at Rebus.Internals.AsyncHelpers.CustomSynchronizationContext.Run()
at Rebus.Internals.AsyncHelpers.RunSync(Func`1 task)
at Rebus.AzureServiceBus.AzureServiceBusTransport.InnerCreateQueue(String normalizedAddress)
at Rebus.AzureServiceBus.AzureServiceBusTransport.Initialize()
at Rebus.Config.RebusConfigurer.<>c__DisplayClass13_0.<Start>b__27(IResolutionContext c)
at Rebus.Injection.Injectionist.Resolver`1.InvokeResolver(IResolutionContext context)
at Rebus.Injection.Injectionist.ResolutionContext.Get[TService]()
- 在两台计算机上都不使用docker运行应用程序正常
- 在笔记本电脑上的docker容器中使用相同的Dockerfile运行应用程序正常
- 我在docker日志中找不到任何相关内容
- 在第二台计算机上重新安装docker
- 试试老版本的docker出现相同的问题
问题:
[INF] Rebus.AzureServiceBus.AzureServiceBusTransport (Thread #1): Initializing Azure Service Bus transport with queue "blablabla"
[INF] Rebus.Bus.RebusBus (Thread #1): Bus "Rebus 1" stopped
Could not resolve Rebus.Bus.IBus with decorator depth 0 - registrations: Rebus.Injection.Injectionist+Handler
Microsoft.Azure.ServiceBus.ServiceBusException: No such host is known.
---> System.Net.Http.HttpRequestException: No such host is known.
---> System.Net.Sockets.SocketException (11001): No such host is known.
at System.Net.Http.ConnectHelper.ConnectAsync(String host, Int32 port, CancellationToken cancellationToken)
--- End of inner exception stack trace ---
at System.Net.Http.ConnectHelper.ConnectAsync(String host, Int32 port, CancellationToken cancellationToken)
at System.Net.Http.HttpConnectionPool.ConnectAsync(HttpRequestMessage request, Boolean allowHttp2, CancellationToken cancellationToken)
at System.Net.Http.HttpConnectionPool.CreateHttp11ConnectionAsync(HttpRequestMessage request, CancellationToken cancellationToken)
at System.Net.Http.HttpConnectionPool.GetHttpConnectionAsync(HttpRequestMessage request, CancellationToken cancellationToken)
at System.Net.Http.HttpConnectionPool.SendWithRetryAsync(HttpRequestMessage request, Boolean doRequestAuth, CancellationToken cancellationToken)
at System.Net.Http.RedirectHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
at System.Net.Http.HttpClient.FinishSendAsyncBuffered(Task`1 sendTask, HttpRequestMessage request, CancellationTokenSource cts, Boolean disposeCts)
at Microsoft.Azure.ServiceBus.Management.ManagementClient.SendHttpRequest(HttpRequestMessage request, CancellationToken cancellationToken)
--- End of inner exception stack trace ---
at Microsoft.Azure.ServiceBus.Management.ManagementClient.SendHttpRequest(HttpRequestMessage request, CancellationToken cancellationToken)
at Microsoft.Azure.ServiceBus.Management.ManagementClient.GetEntity(String path, String query, Boolean enrich, CancellationToken cancellationToken)
at Microsoft.Azure.ServiceBus.Management.ManagementClient.GetQueueAsync(String queuePath, CancellationToken cancellationToken)
at Microsoft.Azure.ServiceBus.Management.ManagementClient.QueueExistsAsync(String queuePath, CancellationToken cancellationToken)
at Rebus.AzureServiceBus.AzureServiceBusTransport.<>c__DisplayClass30_0.<<InnerCreateQueue>b__1>d.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at Rebus.Internals.AsyncHelpers.CustomSynchronizationContext.<Run>b__7_0(Object _)
at Rebus.Internals.AsyncHelpers.CustomSynchronizationContext.Run()
at Rebus.Internals.AsyncHelpers.RunSync(Func`1 task)
at Rebus.AzureServiceBus.AzureServiceBusTransport.InnerCreateQueue(String normalizedAddress)
at Rebus.AzureServiceBus.AzureServiceBusTransport.Initialize()
at Rebus.Config.RebusConfigurer.<>c__DisplayClass13_0.<Start>b__27(IResolutionContext c)
at Rebus.Injection.Injectionist.Resolver`1.InvokeResolver(IResolutionContext context)
at Rebus.Injection.Injectionist.ResolutionContext.Get[TService]()
- 你知道为什么会这样吗
- 我对docker比较陌生,你们能给我一些工具或技巧来了解发生了什么吗
规格:
[INF] Rebus.AzureServiceBus.AzureServiceBusTransport (Thread #1): Initializing Azure Service Bus transport with queue "blablabla"
[INF] Rebus.Bus.RebusBus (Thread #1): Bus "Rebus 1" stopped
Could not resolve Rebus.Bus.IBus with decorator depth 0 - registrations: Rebus.Injection.Injectionist+Handler
Microsoft.Azure.ServiceBus.ServiceBusException: No such host is known.
---> System.Net.Http.HttpRequestException: No such host is known.
---> System.Net.Sockets.SocketException (11001): No such host is known.
at System.Net.Http.ConnectHelper.ConnectAsync(String host, Int32 port, CancellationToken cancellationToken)
--- End of inner exception stack trace ---
at System.Net.Http.ConnectHelper.ConnectAsync(String host, Int32 port, CancellationToken cancellationToken)
at System.Net.Http.HttpConnectionPool.ConnectAsync(HttpRequestMessage request, Boolean allowHttp2, CancellationToken cancellationToken)
at System.Net.Http.HttpConnectionPool.CreateHttp11ConnectionAsync(HttpRequestMessage request, CancellationToken cancellationToken)
at System.Net.Http.HttpConnectionPool.GetHttpConnectionAsync(HttpRequestMessage request, CancellationToken cancellationToken)
at System.Net.Http.HttpConnectionPool.SendWithRetryAsync(HttpRequestMessage request, Boolean doRequestAuth, CancellationToken cancellationToken)
at System.Net.Http.RedirectHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
at System.Net.Http.HttpClient.FinishSendAsyncBuffered(Task`1 sendTask, HttpRequestMessage request, CancellationTokenSource cts, Boolean disposeCts)
at Microsoft.Azure.ServiceBus.Management.ManagementClient.SendHttpRequest(HttpRequestMessage request, CancellationToken cancellationToken)
--- End of inner exception stack trace ---
at Microsoft.Azure.ServiceBus.Management.ManagementClient.SendHttpRequest(HttpRequestMessage request, CancellationToken cancellationToken)
at Microsoft.Azure.ServiceBus.Management.ManagementClient.GetEntity(String path, String query, Boolean enrich, CancellationToken cancellationToken)
at Microsoft.Azure.ServiceBus.Management.ManagementClient.GetQueueAsync(String queuePath, CancellationToken cancellationToken)
at Microsoft.Azure.ServiceBus.Management.ManagementClient.QueueExistsAsync(String queuePath, CancellationToken cancellationToken)
at Rebus.AzureServiceBus.AzureServiceBusTransport.<>c__DisplayClass30_0.<<InnerCreateQueue>b__1>d.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at Rebus.Internals.AsyncHelpers.CustomSynchronizationContext.<Run>b__7_0(Object _)
at Rebus.Internals.AsyncHelpers.CustomSynchronizationContext.Run()
at Rebus.Internals.AsyncHelpers.RunSync(Func`1 task)
at Rebus.AzureServiceBus.AzureServiceBusTransport.InnerCreateQueue(String normalizedAddress)
at Rebus.AzureServiceBus.AzureServiceBusTransport.Initialize()
at Rebus.Config.RebusConfigurer.<>c__DisplayClass13_0.<Start>b__27(IResolutionContext c)
at Rebus.Injection.Injectionist.Resolver`1.InvokeResolver(IResolutionContext context)
at Rebus.Injection.Injectionist.ResolutionContext.Get[TService]()
我的笔记本电脑:
- Windows:1903(内部版本18362.657)
- Docker桌面社区:2.2.0.3(42716)
- Windows:1809(内部版本17763.194)
- Docker桌面社区:2.2.0.3(42716)
非常感谢你的帮助
完全错误:
[INF] Rebus.AzureServiceBus.AzureServiceBusTransport (Thread #1): Initializing Azure Service Bus transport with queue "blablabla"
[INF] Rebus.Bus.RebusBus (Thread #1): Bus "Rebus 1" stopped
Could not resolve Rebus.Bus.IBus with decorator depth 0 - registrations: Rebus.Injection.Injectionist+Handler
Microsoft.Azure.ServiceBus.ServiceBusException: No such host is known.
---> System.Net.Http.HttpRequestException: No such host is known.
---> System.Net.Sockets.SocketException (11001): No such host is known.
at System.Net.Http.ConnectHelper.ConnectAsync(String host, Int32 port, CancellationToken cancellationToken)
--- End of inner exception stack trace ---
at System.Net.Http.ConnectHelper.ConnectAsync(String host, Int32 port, CancellationToken cancellationToken)
at System.Net.Http.HttpConnectionPool.ConnectAsync(HttpRequestMessage request, Boolean allowHttp2, CancellationToken cancellationToken)
at System.Net.Http.HttpConnectionPool.CreateHttp11ConnectionAsync(HttpRequestMessage request, CancellationToken cancellationToken)
at System.Net.Http.HttpConnectionPool.GetHttpConnectionAsync(HttpRequestMessage request, CancellationToken cancellationToken)
at System.Net.Http.HttpConnectionPool.SendWithRetryAsync(HttpRequestMessage request, Boolean doRequestAuth, CancellationToken cancellationToken)
at System.Net.Http.RedirectHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
at System.Net.Http.HttpClient.FinishSendAsyncBuffered(Task`1 sendTask, HttpRequestMessage request, CancellationTokenSource cts, Boolean disposeCts)
at Microsoft.Azure.ServiceBus.Management.ManagementClient.SendHttpRequest(HttpRequestMessage request, CancellationToken cancellationToken)
--- End of inner exception stack trace ---
at Microsoft.Azure.ServiceBus.Management.ManagementClient.SendHttpRequest(HttpRequestMessage request, CancellationToken cancellationToken)
at Microsoft.Azure.ServiceBus.Management.ManagementClient.GetEntity(String path, String query, Boolean enrich, CancellationToken cancellationToken)
at Microsoft.Azure.ServiceBus.Management.ManagementClient.GetQueueAsync(String queuePath, CancellationToken cancellationToken)
at Microsoft.Azure.ServiceBus.Management.ManagementClient.QueueExistsAsync(String queuePath, CancellationToken cancellationToken)
at Rebus.AzureServiceBus.AzureServiceBusTransport.<>c__DisplayClass30_0.<<InnerCreateQueue>b__1>d.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at Rebus.Internals.AsyncHelpers.CustomSynchronizationContext.<Run>b__7_0(Object _)
at Rebus.Internals.AsyncHelpers.CustomSynchronizationContext.Run()
at Rebus.Internals.AsyncHelpers.RunSync(Func`1 task)
at Rebus.AzureServiceBus.AzureServiceBusTransport.InnerCreateQueue(String normalizedAddress)
at Rebus.AzureServiceBus.AzureServiceBusTransport.Initialize()
at Rebus.Config.RebusConfigurer.<>c__DisplayClass13_0.<Start>b__27(IResolutionContext c)
at Rebus.Injection.Injectionist.Resolver`1.InvokeResolver(IResolutionContext context)
at Rebus.Injection.Injectionist.ResolutionContext.Get[TService]()
[INF]Rebus.AzureServiceBus.AzureServiceBusTransport(线程#1):使用队列“blabla”初始化Azure服务总线传输
[INF]Rebus.Bus.RebusBus(线程#1):总线“Rebus 1”停止
无法解析修饰符深度为0的Rebus.Bus.IBus-注册:Rebus.Injection.Injectionist+处理程序
Microsoft.Azure.ServiceBus.ServiceBusException:未知此类主机。
--->System.Net.Http.HttpRequestException:未知此类主机。
--->System.Net.Sockets.SocketException(11001):未知此类主机。
位于System.Net.Http.ConnectHelper.ConnectAsync(字符串主机、Int32端口、CancellationToken CancellationToken)
---内部异常堆栈跟踪的结束---
位于System.Net.Http.ConnectHelper.ConnectAsync(字符串主机、Int32端口、CancellationToken CancellationToken)
位于System.Net.Http.HttpConnectionPool.ConnectAsync(HttpRequestMessage请求,布尔allowHttp2,CancellationToken CancellationToken)
在System.Net.Http.HttpConnectionPool.CreateHttp11ConnectionAsync(HttpRequestMessage请求,CancellationToken CancellationToken)
位于System.Net.Http.HttpConnectionPool.GetHttpConnectionAsync(HttpRequestMessage请求,CancellationToken CancellationToken)
位于System.Net.Http.HttpConnectionPool.SendWithRetryAsync(HttpRequestMessage请求,布尔值doRequestAuth,CancellationToken CancellationToken)
位于System.Net.Http.RedirectHandler.SendAsync(HttpRequestMessage请求,CancellationToken CancellationToken)
位于System.Net.Http.HttpClient.FinishSendAsyncBuffered(任务'1 sendTask,HttpRequestMessage请求,取消令牌源cts,布尔处理)
位于Microsoft.Azure.ServiceBus.Management.ManagementClient.SendHttpRequest(HttpRequestMessage请求,CancellationToken CancellationToken)
---内部异常堆栈跟踪的结束---
位于Microsoft.Azure.ServiceBus.Management.ManagementClient.SendHttpRequest(HttpRequestMessage请求,CancellationToken CancellationToken)
位于Microsoft.Azure.ServiceBus.Management.ManagementClient.GetEntity(字符串路径、字符串查询、布尔值、CancellationToken CancellationToken)
位于Microsoft.Azure.ServiceBus.Management.ManagementClient.GetQueueAsync(字符串queuePath,CancellationToken CancellationToken)
位于Microsoft.Azure.ServiceBus.Management.ManagementClient.QueueExistsAsync(字符串queuePath,CancellationToken CancellationToken)
在Rebus.AzureServiceBus.AzureServiceBusTransport.c__DisplayClass30_0.d.MoveNext()中
---来自引发异常的上一个位置的堆栈结束跟踪---
在Rebus.Internals.asynchhelpers.CustomSynchronizationContext.b_uu7_u0(对象u)中
位于Rebus.Internals.AsynchHelpers.CustomSynchronizationContext.Run()处
位于Rebus.Internals.asynchHelpers.RunSync(Func`1任务)
在Rebus.AzureServiceBus.AzureServiceBusTransport.InnerCreateQueue处(字符串规范化地址)
在Rebus.AzureServiceBus.AzureServiceBusTransport.Initialize()处
在Rebus.Config.reusconfigurer.c__显示器上显示Class13_0.b_27(IResolutionContext c)
在Rebus.Injection.Injectionist.Resolver`1.InvokeResolver(IResolutionContext)处
在Rebus.Injection.Injectionist.ResolutionContext.Get[TService]()
检查您的网络配置。错误表示找不到主机名。两台计算机上容器的网络设置相同。我没有设置/指定任何有关网络的内容。它们是否都在同一网络上?这有用吗?是的,办公室里也有同样的网络。这两台机器都可以访问互联网,Docker还可以从云注册表中提取图像。