Не удается получить файл сертификата из приложения, работающего на сервере - PullRequest
0 голосов
/ 07 июня 2019

У меня есть приложение, написанное на C # MVC 4, которое будет работать на сервере, у которого есть один сертификат внутри проекта, в папке App_Data.Мне нужно получить этот файл сертификата для доступа к веб-службе.Сервер - Windows Server 2012, использующий iis7.

Локальный код работает, как и ожидалось, но на сервере он не работает.Там я получаю сообщение " Системе не удается найти указанный файл ".Но этот файл есть (я возвращаю содержимое этого каталога и предыдущего, получая их в консоли браузера).Я попытался переименовать сертификат из .pfx в .pcertx (случайный) и снова не работает на сервере, хотя он работает локально.

Вот код, который я использую, чтобы попытаться получить этоfile:

public string getCertificado()
{
    string path = string.Empty;
    try
    {          
        path = HttpContext.Current.Server.MapPath(@"~\App_Data\CERTIFICATE.pcertx");            
        Byte[] rawCert = File.ReadAllBytes(path);
        String certificado = Convert.ToBase64String(rawCert);
        _X509Cert.Import(Convert.FromBase64String(certificado), "PASSWORD", X509KeyStorageFlags.PersistKeySet);
        client.AddCerts(new X509Certificate[] { _X509Cert });
        return string.Empty;    
    }
    catch (Exception ex)
    {
        // In case of error, list the content of the current directory and the previous                
         string[] filePaths = Directory.GetFiles(HttpContext.Current.Server.MapPath(@"~\App_Data"));
         string pastaAnterior = Path.GetFullPath(Path.Combine(HttpContext.Current.Server.MapPath(@"~\App_Data"), @"..\"));
         string[] filePathsAnt = Directory.GetFiles(pastaAnterior);
         return "Cannot get certificate." + ex.Message + "; " + ex.InnerException + ";           Path: " + path + ";            Folder content: " + string.Join("\n",filePaths) + ";         Previous folder content" + string.Join("\n",filePathsAnt);
     }
}

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

"Não foi possível obter nenhum Certificado. Системе не удается найти указанный файл.
Путь: C: \ Unisys \ Management \ Applications \ sicopplustest \ App_Data \ CERTIFICATE.pcertx;
Паста Caminho: C: \ Unisys \ Management \ Applications \ sicopplustest \ App_Data \ CERTIFICATE.pcertx C: \ Unisys \ Management \Приложения \ sicopplustest \ App_Data \ DynamicAspx.xsl;

паста Caminho anteriorC: \ Unisys \ Management \ Applications \ sicopplustest \ ApplicationInfo.Debug.xml C: \ Unisys \ Management \ Applications \ sicopplustest \ ApplicationInfo.Release.xmlC: \ Unisys \ Management \ Applications \ sicopplustest \ ApplicationInfo.xml ... "

Если я получу сертификат правильно, сообщение не будет отправлено.

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

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