Почему при установлении соединения с SQL Server возникает ошибка, связанная с сетью или экземпляром? - PullRequest
0 голосов
/ 09 мая 2019

Я разработал простой веб-API и развернул его на сервере Azure вместе с базой данных SQL Server.База данных и веб-API размещены на одном сервере.Я могу подключиться к базе данных с моей машины для разработки.Если я запускаю Web API в Visual Studio 2017, все работает нормально, я могу вызвать все веб-методы и получить правильный ожидаемый ответ.Теперь, когда я развернул Web API на сервере и запустил его под IIS, если я выполняю вызов Web API с помощью Postman, я получаю это сообщение об ошибке примерно через 30 секунд ожидания:

"Связанный с сетьюили ошибка конкретного экземпляра произошла при установлении соединения с SQL Server. Сервер не был найден или был недоступен. Убедитесь, что имя экземпляра указано правильно и что SQL Server настроен для разрешения удаленных подключений. (Поставщик: поставщик именованных каналов, ошибка: 40 - Не удалось открыть соединение с SQL Server) "

Я знаю, что эта ошибка обсуждалась здесь много раз, но ни одно из предложенных предложений не помогло решить мою проблему.В качестве виртуальной машины Azure используется 64-разрядная версия Windows Server 2016.

В строке подключения, используемой моим веб-API, для источника данных было задано имя компьютера, его внутренний IP-адрес, ключевое слово "localhost" илиIP-адрес обратной связи «127.0.0.1», но я получаю ту же ошибку, что и выше, в каждой из этих ситуаций.Среда SQL Server Management Studio (работающая локально на том же сервере, на котором размещена база данных и мой веб-API) может подключаться к базе данных, если я использую любой из трех источников данных: локальный хост, внутренний IP-адрес или имя компьютера.

В ситуации, когда это работает, когда я запускаю Web API в Visual Studio, источником данных в строке подключения задается внешний IP-адрес сервера Azure.Это было бы единственным отличием в том, что касается источника данных.

Я должен упомянуть, что у меня есть несколько веб-методов, которые не требуют доступа к базе данных.Они работают нормально и возвращают ожидаемый результат.

Есть ли другие конкретные настройки, которые мне нужно было бы сделать в IIS, чтобы это произошло?

TIA, Eddie

1 Ответ

0 голосов
/ 09 мая 2019

Я понял, в чем проблема.Мой веб-API был разработан в ASP.Net Core, и поэтому он создает собственный исполняемый файл.Это ищет файл конфигурации с именем TheNameOfTheApplication.exe.config.

Из-за временной задержки я изменил строку подключения в файле "app.config" и оставил ее вФайл «TheNameOfTheApplication.exe.config» с неверным внешним IP-адресом.

...