c# - C# netcore 应用程序无法解析 Docker Windows 容器中的 Rebus.Bus.IBus
问题描述
我有一个简单的 netcore 3.0 控制台应用程序,使用 Rebus(v7.1.0) 初始化与 Azure 服务总线的连接。我将应用程序构建为独立的,然后在我的笔记本电脑和办公室的另一台计算机上运行它。
问题 :
该应用程序仅在 docker 容器中运行的第二台计算机上引发错误(见下文)。
我尝试过的:
- 在两台机器上运行没有 docker 的应用程序。好的
- 使用相同的 Dockerfile 在我的笔记本电脑上的 docker 容器中运行应用程序。好的
- 我在 docker 日志中找不到任何相关内容。
- 在第二台计算机上重新安装 docker。
- 尝试旧版本的 docker。出现同样的问题
问题 :
- 你知道为什么会这样吗?
- 我对 docker 比较陌生,你们能给我一些工具或提示来了解正在发生的事情吗?
眼镜 :
我的笔记本电脑 :
- 视窗:1903(内部版本 18362.657)
- Docker 桌面社区:2.2.0.3 (42716)
第二台电脑:
- 视窗: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]()
解决方案
推荐阅读
- typescript - 根据方法中的其他参数推断参数类型
- python - 有什么方法可以加速 pyspark 中的缓存过程?
- javascript - Angular 6中的嵌套三元条件
- python - 安全地存储 REST API 凭据以在 Python 环境中访问
- perl - 如何保存您在 perl 中搜索的模式
- json - Spring 从 PostgreSQL 转换为 Geojson FeatureCollection
- apache-spark - 如何将命名参数发送到 spark-submit
- azure-machine-learning-service - AzureML:自动缩放 ML 端点
- javascript - 在 Microsoft Edge 中检测自动翻译事件
- kubernetes - Ingress 的 Istio 可编程路由