У меня есть приложение, размещенное на веб-сайте IIS TestWebsite , и я использую Microsoft.Web.Administration для IIS Automation.
Мне нужно выполнить следующие операции с привязками того же веб-сайта TestWebsite из TestWebsite
- Добавить HTTPS-привязку с сертификатом SSL на веб-сайт «TestWebsite» из того же приложения (код для добавления привязки будет в том же «TestWebsite»)
- Удалите привязку.
Я сделал следующий код, и странно то, что на 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)
Есть ли ошибка, связанная с разрешениями?Что я делаю не так в этом?
Ваша помощь будет оценена
Спасибо :) Даниал Малик