Добавление привязки https из размещенного приложения ASP.NET MVC - PullRequest
0 голосов
/ 24 сентября 2019

У меня есть приложение, размещенное на веб-сайте IIS TestWebsite , и я использую Microsoft.Web.Administration для IIS Automation.

Мне нужно выполнить следующие операции с привязками того же веб-сайта TestWebsite из TestWebsite

  1. Добавить HTTPS-привязку с сертификатом SSL на веб-сайт «TestWebsite» из того же приложения (код для добавления привязки будет в том же «TestWebsite»)
  2. Удалите привязку.

Я сделал следующий код, и странно то, что на localhost он добавляет привязку https, но даже до manager.commitchange ().Эта строка создает исключение на локальном хосте, поэтому я удалил эту строку, но на Windows Server она не добавляет привязку даже после успешного выполнения кода.(без commitchanges (), я не знаю, как это работает на локальном хосте без него)

Я использую IIS 10 на локальном хосте и IIS 8.5 на стадии подготовки и IIS 8.0 на производстве.

using (ServerManager iisManager = new ServerManager())
{
    var website = iisManager.Sites.Where(x => x.Name == "TestWebsite").FirstOrDefault();
    if (website != null)
    {
        var store = new X509Store(StoreName.Root, StoreLocation.LocalMachine);
        store.Open(OpenFlags.OpenExistingOnly | OpenFlags.ReadWrite);
        var pfxPath = Server.MapPath(model.PfxPath);
        var certificate = new X509Certificate2(pfxPath, password, X509KeyStorageFlags.Exportable | X509KeyStorageFlags.PersistKeySet);
        store.Add(certificate);
        store.Close();
        var certHash = certificate.GetCertHash();

        string bindingInformation = string.Format("{0}:{1}:{2}", "*", "443", model.UserCustom);
        var binding = website.Bindings.Add(bindingInformation, certHash, store.Name);
        binding.Protocol = "https";
        store.Close();

        website.ApplicationDefaults.EnabledProtocols = "http,https";
        iisManager.CommitChanges();
    }
}

Я получаю следующую ошибку на iisManager.CommitChanges () line

Указанный сеанс входа не существует.Возможно, это уже было прекращено.(Исключение из HRESULT: 0x80070520)

Есть ли ошибка, связанная с разрешениями?Что я делаю не так в этом?

Ваша помощь будет оценена

Спасибо :) Даниал Малик

1 Ответ

0 голосов
/ 25 сентября 2019

IIS вернет ошибку 0x80070520, если группа администраторов не имеет прав доступа к C: \ ProgramData \ Microsoft \ Crypto \ RSA \ MachineKeys.Пожалуйста, попробуйте предоставить полный контроль для вашей группы администраторов.

https://www.cnblogs.com/ziye/p/9208353.html

https://blogs.msdn.microsoft.com/asiatech/2010/08/12/got-error-0x80070520-when-binding-certificate-to-web-site-on-iis-7/

...