MongoDB создает исключение при разрешении строки подключения (C#) - PullRequest
0 голосов
/ 07 мая 2020

Я создаю приложение winform, которое изначально подключается к серверу MongoDB с помощью драйвера 2.10. Когда я пытаюсь подключиться на своем компьютере, все работает гладко, но при попытке установить клиентов на другие компьютеры через файл msi приложение вылетает, и я получаю следующее:

ERROR - List of configured name servers must not be empty.
Parameter name: servers
   at DnsClient.LookupClient.QueryInternal(DnsQuestion question, DnsQuerySettings queryOptions, IReadOnlyCollection`1 servers)
   at DnsClient.LookupClient.Query(DnsQuestion question)
   at MongoDB.Driver.Core.Configuration.ConnectionString.Resolve(Boolean resolveHosts)
   at MongoDB.Driver.MongoUrl.Resolve(Boolean resolveHosts)
   at MongoDB.Driver.MongoClientSettings.FromUrl(MongoUrl url)
   at MongoDB.Driver.MongoClient..ctor(String connectionString)
   at PaladinFormV2.MongoCRUD..ctor(String i_database)
   at PaladinFormV2.Paladin..ctor(Boolean onboarding)
   at PaladinFormV2.Program.Main()

Я подключаюсь через строка подключения выглядит следующим образом:

MongoClient client = new MongoClient("mongodb+srv://[name]:[pass]@mcsamples-nwups.mongodb.net/test?retryWrites=true&w=majority");

Что я делаю не так и какой информации здесь не хватает, чтобы решить эту проблему? Спасибо

1 Ответ

0 голосов
/ 10 мая 2020

Итак, после долгих попыток выяснить, что здесь пошло не так, я пришел к выводу, что использование '+ srv' внутри строки подключения пытается разрешить DNS-сервер, на котором работает ваш экземпляр mon go, для клиентов, использующих это, это может привести к тому, что приложение может взломать sh.

Мое исправление использовало другую строку подключения, в которой этот префикс не используется. Информация о строке подключения была взята отсюда https://docs.mongodb.com/manual/reference/connection-string/

...