Наш веб-сервис обертывает стороннюю библиотеку, содержащую следующий код.Файл не найден на RSACryptoServiceProvider, разрешения учетной записи службы?
Мы используем учетную запись службы Active Directory в пуле приложений IIS 6 (без интерактивных возможностей входа). Наш сервис выходит из строя с ошибкой «Система не может найти указанный файл». Мы проследили эту ошибку с помощью «RSACryptoServiceProvider provider = new RSACryptoServiceProvider();». Третий сборщик зависит от x509-файлового сертификата для его процесса шифрования, а учетная запись службы имеет доступ для чтения/записи к папке ключей. Кроме того, учетная запись службы имеет чтение, запись, изменение прав на «C: \ Documents and Settings \ All Users \ Application Data \ Microsoft \ Crypto \ RSA \ MachineKeys».
Код:
StringBuilder builder = new StringBuilder(publicKeyData);
builder.Replace("-----BEGIN CERTIFICATE-----", "");
builder.Replace("-----END CERTIFICATE-----", "");
X509Certificate2 certificate = new X509Certificate2(Convert.FromBase64String(builder.ToString()));
string xmlString = certificate.PublicKey.Key.ToXmlString(false);
RSACryptoServiceProvider provider = new RSACryptoServiceProvider(); //BOOM
CspKeyContainerInfo containerInfo = provider.CspKeyContainerInfo;
provider.PersistKeyInCsp = false;
provider.FromXmlString(xmlString);
loadedKeys.Add(key, provider);
provider2 = provider;
Мы приоткрыл FileMon и заметил, что есть файл не найден для этого AppPool, а затем еще УСПЕХА для точно такой же файл.
Я из моей стихии, у кого-нибудь есть идея, почему мы это видим?