以编程方式设置网站方案
Setting Scheme programmatically of website
我有一个包含大约 40 多个 Https 站点的多站点应用程序。所有站点的方案列为空。
我尝试创建一个计划作业,该作业将使用 SiteDefinitionRepository 在所有站点中将 Scheme 更新为 HTTPS 循环。问题是 Scheme 属性 是只读的,所以我不能设置相同的。
有没有办法可以将 Scheme 设置为 HTTPS 而不是为 40 多个站点手动设置?
SiteDefinition
和 HostDefinition
实现是 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);
}
代码会变成这样
在此
我有一个包含大约 40 多个 Https 站点的多站点应用程序。所有站点的方案列为空。
有没有办法可以将 Scheme 设置为 HTTPS 而不是为 40 多个站点手动设置?
SiteDefinition
和 HostDefinition
实现是 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);
}
代码会变成这样
在此