2017-05-23 14 views
0

C#ドライババージョン2.4.3でMongoDBアトラスに接続しようとしているasp.netコアベースのドッカーコンテナがあります。MongoDBアトラスの接続が、ASP.netコアを実行しているドッカーコンテナ内で動作していません。 kestrel内部からうまく動作します

私たちがコンテナの外で実行すると、接続が正常に動作しています。すなわち直接ケストレルからのものである。しかし、コンテナ内から同じコードを実行すると、mongodbアトラスへの接続がタイムアウトします。

詳細: MongoDBのC#のドライババージョン:2.4.3

接続文字列: のMongoDB:// SA:@ cluster0-shard-00-00-po5vp.mongodb.net:27017、cluster0- shard-00-01-po5vp.mongodb.net:27017,cluster0-shard-00-02-po5vp.mongodb.net:27017/admin?ssl=true &さらにreplicaSet = Cluster0-シャード - 0 &認証発信元=管理者

アクセスするデータベース:構成

ASP.netコアバージョン:Dockerfileで1.1

BaseImage:マイクロソフト/

Dockerfile内容をaspnetcore-構築: マイクロソフト/ WORKDIR/SaaS_Configuration_Microservice COPY ./SaaS_Configuration_Microserviceをaspnetcore-ビルドから。 [ "PublishOutput/SaaS_Configuration_Microservice.dll"、 "DOTNET"] 80 がRUN DOTNET RUNのDOTNETがPublishOutput ENTRYPOINT -o -cリリースを公開復元

を公開私たちは、Windows 10で

完全チョウゲンボウを実行していますエラーメッセージ: ex.Message "30000ms後に、CompositeServerSelectorを使用してサーバーを選択するとタイムアウトが発生しました{Selectors = ReadPreferenceServerSelector {ReadPreference = {Mode:Primary}}、LatencyLimitingServerSelector {AllowedLatencyRange = 00:00:00.0150000}}クライアントのクラスタ状態のビュー{ClusterId:\ "1 \"、ConnectionMode:\ "ReplicaSet"、タイプ: "ReplicaSet"、状態:\ "Disconnected \"、サーバー:[ServerId:\ "{ClusterId:1、EndPoint:\" Unspecified/cluster0-shard-00-00-po5vp。 mongodb.net:27017 \ "} \"、エンドポイント:\ "未指定/ cluster0-shard-00-00-po5vp.mongodb.net:27017 \"、状態:\ "切断済み"、タイプ:\ "不明\" 、HeartbeatException:\ "MongoDB.Driver.MongoConnectionException:サーバーへの接続を開く際に例外が発生しました。 ---> MongoDB.Driver.Core.WireProtocol.CommandWireProtocol 1.<ExecuteAsync>d__11.MoveNext()\n--- End of stack trace from previous location where exception was thrown ---\n at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\n at MongoDB.Driver.Core.Connections.ConnectionInitializer.<InitializeConnectionAsync>d__3.MoveNext()\n--- End of stack trace from previous location where exception was thrown ---\n at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\n at MongoDB.Driver.Core.Connections.BinaryConnection.<OpenHelperAsync>d__48.MoveNext()\n --- End of inner exception stack trace ---\n at MongoDB.Driver.Core.Connections.BinaryConnection.<OpenHelperAsync>d__48.MoveNext()\n--- End of stack trace from previous location where exception was thrown ---\n at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\n at MongoDB.Driver.Core.Servers.ServerMonitor.<HeartbeatAsync>d__27.MoveNext()\" }, { ServerId: \"{ ClusterId : 1, EndPoint : \"Unspecified/cluster0-shard-00-01-po5vp.mongodb.net:27017\" }\", EndPoint: \"Unspecified/cluster0-shard-00-01-po5vp.mongodb.net:27017\", State: \"Disconnected\", Type: \"Unknown\", HeartbeatException: \"MongoDB.Driver.MongoConnectionException: An exception occurred while opening a connection to the server. ---> MongoDB.Driver.MongoCommandException: Command failed.\n at MongoDB.Driver.Core.WireProtocol.CommandWireProtocol 1.ProcessReply(ConnectionId connectionId、ReplyMessage) - > MongoDB.Driver.MongoCommandException:コマンドが失敗しました。\ n MongoDB.Driver.Core.WireProtocol.CommandWireProtocol 1.ProcessReply(ConnectionId connectionId, ReplyMessage 1件の返信) 1 reply)\n at MongoDB.Driver.Core.WireProtocol.CommandWireProtocol 1.d__11.MoveNext()\ n ---例外がスローされた前の場所からのスタックトレースの終了--- \ n System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\ n System.Runtime.CompilerServices。 TaskAwaiter.HandleNonSuccessAndDebuggerNotification(タスクタスク)\ n MongoDB.Driver.Core.Connections.ConnectionInitializer.d__3.MoveNext()\ n ---例外がスローされた前の場所からのスタックトレースの終了--- System.Runtimeの\ n .ExceptionServices.ExceptionDispatchInfo.Throw()\ n System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(タスクタスク)\ n MongoDB.Driver.Core.Connections.BinaryConnection.d__48.MoveNext()\ n ---内部終了元mongoDB.Driver.Core.Connections.BinaryConnection.d__48.MoveNext()\ n ---例外がスローされた前の場所からのスタックトレースの終了--- System.Runtimeの\ n。 ExceptionServices.ExceptionDispatchInfo.Throw()\ n System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(タスクタスク)\ n MongoDB.Driver.Core.Servers.ServerMonitor \ n"Endpoint:\"、Endpoint:\ "、Endpoint:\" Unknown/cluster0-shard-00-02-po5vp.mongodb.net:27017 \ Unknown/cluster0-shard-00-02-po5vp.mongodb.net:27017 \ "、状態:\" Disconnected \ "、タイプ:\" Unknown \ "、HeartbeatException:\" MongoDB.Driver.MongoConnectionException:サーバーへの接続を開きます。 MongoDB.Driver.Core.WireProtocol.CommandWireProtocol 1.ProcessReply(ConnectionId connectionId, ReplyMessage 1件の返信)\ n MongoDB.Driver.Core.WireProtocol.CommandWireProtocol`1.d__11.MoveNext()\ n ---例外がスローされた前の場所からのスタックトレースの終了--- \ n System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\ n System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(タスクタスク)\ n \ n ---例外がスローされた前の場所からのスタックトレースの終了--- System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\ nの\ nでのスタックトレースの終わり。MongoDB.Driver.Core.Connections.ConnectionInitializer.d__3.MoveNext() nでSystem.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(タスクタスク)\ n MongoDB.Driver.Core.Connections.BinaryConnection.d__48.MoveNext()\ n ---内部例外スタックトレースの終了--- \ n MongoDB.Driver.Core.Connections.BinaryConnection.d__48.MoveNext()\ n --- staの終わり例外がスローされた前の場所からのckトレース--- \ n System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\ n System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(タスクタスク)\ n MongoDB.Driver.Core .Servers.ServerMonitor.d__27.MoveNext()\ "}]}。"文字列

内部例外:ヌル

+0

Googleとhttps://cloud.mongodb.com/へのPingは、コンテナ内部からうまく機能しています。 –

答えて

1

"マイクロソフト/ aspnetcoreビルド" のLinuxイメージであり、バグがあります: https://docs.atlas.mongodb.com/driver-connection/#c-net-driver-example

重要:.NETのコアライブラリは、SNI TLSをサポートしていません。 Linuxの場合は 、OSXの場合は拡張子。これらの動作中の.NETコアを使用するアプリケーション システムは、Atlas Free Tierクラスタに接続できません。

問題はdotnet/corefx github pageで追跡されます。

+0

明確にする。これはあなたがAtlas Free Tierを使用していることを前提としています。あなたがそうでないならば、それはまったく別の問題かもしれません。 –

関連する問題