以编程方式设置网站方案

Setting Scheme programmatically of website

我有一个包含大约 40 多个 Https 站点的多站点应用程序。所有站点的方案列为空。

我尝试创建一个计划作业,该作业将使用 SiteDefinitionRepository 在所有站点中将 Scheme 更新为 HTTPS 循环。问题是 Scheme 属性 是只读的,所以我不能设置相同的。

有没有办法可以将 Scheme 设置为 HTTPS 而不是为 40 多个站点手动设置?

SiteDefinitionHostDefinition 实现是 IReadOnly

创建可写克隆并在主机定义中将 UseSecureConnection 设置为 true

// ISiteDefinitionRepository siteDefinitionRepository

var sites = _siteDefinitionRepository.List();

foreach (var site in sites)
{
    var writableSite = site.CreateWritableClone();

    if (site.SiteUrl.Scheme == "http")
    {
        writableSite.SiteUrl = new Uri(site.SiteUrl.ToString().Replace("http", "https"));
    }

    var hosts = writableSite.Hosts.Where(x => !x.Name.Equals(HostDefinition.WildcardHostName)); 

    foreach (var writableHost in hosts)
    {
        writableHost.UseSecureConnection = true;
    }

    _siteDefinitionRepository.Save(writableSite);
}

代码会变成这样

在此