Проблемы с подключением SQL из контейнера IIS ASP. NET - PullRequest
2 голосов
/ 08 мая 2020

Справочная информация: я портирую приложения в контейнеры docker, используя последнюю версию контейнера 4.8 ASP net. Все они используют SQL серверные соединения.

Приложение1: Framework 4.8, никаких проблем. Приложение2: Framework 4.6.2, sh соединение с сервером SQL невозможно.

Вот строка подключения:

<add name="DefaultConnection" connectionString="Data Source=172.31.0.2; Initial Catalog=Integ_Catalog; User ID=MYUSER; Password=Pa55W0rd; MultipleActiveResultSets=True;Connect Timeout=120" providerName="System.Data.SqlClient" />

Из контейнера я запустил Powershell, чтобы убедиться, что строка подключения работает на 100%. Я обновил dapper до последней версии, надеясь, что это поможет. Есть идеи, что попробовать?

Trace

A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: Named Pipes Provider, error: 40 - Could not open a connection to SQL Server) ---> System.ComponentModel.Win32Exception (0x80004005): The network path was not found
   at System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, UInt32 waitForMultipleObjectsTimeout, Boolean allowCreate, Boolean onlyOneCheckConnection, DbConnectionOptions userOptions, DbConnectionInternal& connection)
   at System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal& connection)
   at System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal oldConnection, DbConnectionInternal& connection)
   at System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions)
   at System.Data.SqlClient.SqlConnection.TryOpenInner(TaskCompletionSource`1 retry)
   at System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource`1 retry)
   at System.Data.SqlClient.SqlConnection.Open()

* Обновление *

Когда приложение было в том же AWS VP C в качестве БД вызовы не будут выполнены. Но когда они находятся в другом VP C, это сработает. В этом нет смысла, можно подумать, что все будет наоборот. Сеть в БД, приложении / хосте и внутри VP C выглядит нормально.

Ответы [ 2 ]

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

Вам необходимо добавить IIS_USR в SQL Server и дать разрешение на доступ к базе данных

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

Решением было перенести приложение на внешний VP C, почему? Возможно, мир никогда не узнает :)

...