Ошибка входа пользователя DOMAIN \ ServerName $ после ошибки подключения к базе данных - PullRequest
0 голосов
/ 29 апреля 2020

Наш веб-сайт работает нормально и работает в течение нескольких дней или даже недель.

И затем без каких-либо изменений он внезапно начинает выдавать ошибки подключения к базе данных:

Ошибка

System.Web.HttpUnhandledException (0x80004005): Exception of type 'System.Web.HttpUnhandledException' was thrown. ---> System.Data.SqlClient.SqlException (0x80131904): Login failed for user 'DOMAIN\ServerName$'.
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()
at System.Data.Linq.SqlClient.SqlConnectionManager.UseConnection(IConnectionUser user)
at System.Data.Linq.SqlClient.SqlProvider.get_IsSqlCe()
at System.Data.Linq.SqlClient.SqlProvider.InitializeProviderMode()
at System.Data.Linq.SqlClient.SqlProvider.System.Data.Linq.Provider.IProvider.Execute(Expression query)
at System.Data.Linq.DataContext.ExecuteCommand(String command, Object[] parameters)
at MyClass.Data.Linq.MYDB.MYDBDataContext.OnCreated()

В строке подключения мы используем обычную аутентификацию basi c, которая работает нормально.

Строка подключения

    <add name="MYDBConnectionString" connectionString="server=DBServer;database=MYDB;user=myeuser;pwd=mypassword;Persist Security Info=False;Trusted_Connection=False;Integrated Security=False" providerName="System.Data.SqlClient" />

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

ОБНОВЛЕНИЕ: Также стоит отметить, что веб-сайт снова работает нормально после перезапуска iisreset или пула приложений, но он не может получить доступ к базе данных до тех пор, пока он пытается подключиться не к тому пользователю.

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

Я пытался установить Persist Security Info, Trusted_Connection, Integrated Security по-разному, но я не смог найти правильную комбинацию .

Или есть что-то еще, что я мог бы установить или попытаться не дать ему вернуться к пользователю пула приложений?

Буду признателен за любые советы.

1 Ответ

0 голосов
/ 29 апреля 2020

Похоже, вы используете SQL Проверка подлинности сервера. В этом случае я бы проверил следующее. Войдите на сервер SQL, используя SSMS, go для защиты -> логины -> найдите пользователя -> свойства и убедитесь, что политика истечения срока действия пароля не установлена ​​для используемого пользователя SQL Server. Если он установлен, срок действия используемого вами пароля мог истечь.

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...