#asp.net #sql-server #docker #asp.net-mvc-5
Вопрос:
Я настроил докер рабочего стола со следующими изображениями
- SQL Server 2019
- ASP.NET 5 приложение
SQL-сервер работает нормально (мне удалось подключить его к среде SQL Server Management Studio из моего локального Windows, а также проверить с помощью telnet из изображения приложения, которое выглядит нормально), но с моего ASP.NET приложение Я получаю следующее сообщение
Не удается подключиться к браузеру SQL Server. Убедитесь , что SQL Server…….., System.Net.Internals.SocketExceptionFactory Исключение ExtendedSocketException (00000005, 0xFFFDFFFF): Имя или служба неизвестны»
Я попробовал несколько вариантов строки подключения, но у меня все еще та же проблема.
"connectionStrings": {
"DefaultConnection": "Server={ipserver name}\MSSQLSERVER;Initial Catalog=Rocky;Integrated Security=True;User Id=myId;Password=myPsw;"
}
Я что-нибудь пропустил ?
Комментарии:
1. Вы
Integrated Security
установили значениеtrue
, но затем определите имя пользователя и пароль; это не имеет никакого смысла. Если вы используете интегрированную безопасность, вы, по определению, не определяете имя пользователя и пароль, а также учетные данные пользователя Windows, под которым работает приложение, передаются экземпляру.2. В вашем. файл json у вас есть одна обратная косая черта, разделяющая имя экземпляра (
Server=ServerNameOrIpAddressMSSQLSERVER;
) или две (Server=ServerNameOrIpAddress\MSSQLSERVER;
)? Последнее верно, первое-нет.3.
MSSQLSERVER
обычно обозначает (внутреннее) имя экземпляра безымянного экземпляра — для подключения к нему обычно не следует указывать имя экземпляра — только имя компьютера (или ip-адрес). Так что попробуйтеServer={ipserver name};Initial Catalog=Rocky
и дайте нам знать, если это сработает4. Если вы используете именованный экземпляр, вам необходимо, чтобы браузер SQL был запущен и доступен по сети. Если вам нужен экземпляр по умолчанию, оставьте
MSSQLSERVER
5.
Integrated Security
вот в чем проблема. Но если вы действительно хотите использоватьIntegrated Security
, то настройте контейнер на использование gMSA, в противном случае установите для него значениеFalse
. Кроме того, если сервер MSSQL имеет только один экземпляр, просто используйте имя IP/компьютера без добавления имени экземпляра. Это может помочь: connectionstrings.com/sql-server
Ответ №1:
наконец я нашел проблему.
- У меня в докере было более одного изображения этого проекта.
- appsettings.json в контейнере не обновлялся, и строка подключения была другой, я предполагаю, что в ней использовалась старая версия изображения. после очистки всех изображений, смены сервера на IP и повторного развертывания он начал работать.
Спасибо за всех.