Я разработал простой веб-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