Панель инструментов Docker MongoDB C # TimeoutException - PullRequest
0 голосов
/ 30 января 2019

Я новичок в docker и mongoDB, использую набор инструментов docker на домашней машине вдов 10, хотя я пытался следовать учебному пособию на носителе по докеру, .net core и mongodb, получаю следующее сообщение об ошибке

Тайм-аут произошел после 30000 мс при выборе сервера с помощью CompositeServerSelector {Selectors = MongoDB.Driver.MongoClient + AreSessionsSupportedServerSelector, LatencyLimitingServerSelector {AllowedLatencyRange = 00: 00: 00.0150000}}.Клиентское представление состояния кластера: {ClusterId: "1", ConnectionMode: "ReplicaSet", тип: "ReplicaSet", состояние: "Disconnected", серверы: [{ServerId: "{ClusterId: 1, EndPoint:" xxx.xxx.xx.xxx:27017 "}", конечная точка: "xxx.xxx.xx.xxx:27017", состояние: "Disconnected", тип: "Unknown", HeartbeatException: "MongoDB.Driver.MongoConnectionException: возникла исключительная ситуация при открытииподключение к серверу. ---> System.Net.Internals.SocketExceptionFactory + ExtendedSocketException: попытка подключения не удалась, поскольку подключенная сторона не ответила должным образом через определенный период времени, или не удалось установить соединение, так как подключенный хост не смог ответить xxx.xxx.xx.xxx:27017
в System.Net.Sockets.Socket.EndConnect (IAsyncResult asyncResult)
в System.Net.Sockets.Socket. <> c.b__271_0 (IAsyncResult iar) --- Конецтрассировка стека от предыдущего местоположения, где было сгенерировано исключение --- в MongoDB.Driver.Core.Connections.TcpStreamFactory.ConnectAsync (сокет-сокет, EndPoint endPoint, CancellationToken cancellationToken) в MongoDB.Driver.Core.Connections.TcpStreamFactory.CreateStreamAsync (EndPoint endPoint, CancellationToken cancellationToken) в MongoDB.Driver.Core.Connections.BinaryConnection.OpenHelperAsync - исключение исключенияв MongoDB.Driver.Core.Connections.BinaryConnection.OpenHelperAsync (CancellationToken cancellationToken) в MongoDB.Driver.Core.Servers.ServerMonitor.HeartbeatAsync (CancellationToken cancellationToken) "}]}.

* 1007Класс
namespace TodoApp.Common.Config
{
 public class MongoDbConfig
 {
    public string Database { get; set; }

    public string Host { get; set; }

    public int Port { get; set; }

    public string User { get; set; }

    public string Password { get; set; }

    public string ConnectionString
    {
        get
        {
            if (string.IsNullOrWhiteSpace(User) || string.IsNullOrWhiteSpace(Password))
            {
                return $@"mongodb://{Host}:{Port}";
            }
            return $@"mongodb://{User}:{Password}@{Host}:{Port}/{Database}?connect=replicaSet";
        }
      }
     }
    }

Контекстный класс

namespace TodoApp.Common.Models
{
 public class TodoContext : ITodoContext
 {
    private readonly IMongoDatabase _db;

    public TodoContext(IOptions<MongoDbConfig> config)
    {
        var client = new MongoClient(config.Value.ConnectionString);
        _db = client.GetDatabase(config.Value.Database);
    }

    public IMongoCollection<Todo> Todos => _db.GetCollection<Todo>("Todos");
  }
 }

appsettings

"MongoDB": {
 "Database": "TodoDB",
 "Host": "xxx.xxx.xx.xxx",
 "Port": "27017",
 "User": "root",
 "Password": "example"
},

docker-compose.yml

    version: '3.1'
     services:
      mongo:
        image: mongo
        restart: always
        environment:
         MONGO_INITDB_ROOT_USERNAME: root
         MONGO_INITDB_ROOT_PASSWORD: example
        ports:
         - 27017:27017
       mongo-express:
        image: mongo-express
        restart: always
        ports:
         - 8081:8081
        environment:
         ME_CONFIG_MONGODB_ADMINUSERNAME: root
         ME_CONFIG_MONGODB_ADMINPASSWORD: example
        depends_on:
         - mongo

Средняя ссылка: это

...