У меня есть следующий код, отлично работающий на тестовом окне, которое запускает службу MSSQLSERVER в качестве SYSTEM:
currentIdentity = SqlContext.WindowsIdentity;
impersonatedIdentity = currentIdentity.Impersonate();
client.PreAuthenticate = true;
client.Credentials = CredentialCache.DefaultNetworkCredentials;
client.Url = currentURL;
/* Encrypt */
try
{
encryptedText = client.Encrypt(plainText);
}
finally
{
if (impersonatedIdentity != null)
{
impersonatedIdentity.Undo();
}
}
return encryptedText;
Основная идея этой функции - шифрование / дешифрование текста через веб-сервис, размещенный внутри,Всякий раз, когда эта функция вызывается на сервере, на котором запущена служба MSSQLSERVER с именем «SYSTEM» или другой локальной учетной записью, олицетворение работает нормально.Если на сервере запущена служба MSSQLSERVER в качестве учетной записи домена (то есть DOMAIN \ sqlaccount), учетные данные DOMAIN \ sqlaccount всегда передаются веб-службе, и олицетворение, похоже, не работает.
Это ожидаемое поведение?Заранее спасибо.