Kentico MVC 站点部署

Kentico MVC site deployment

我们正在使用 Kentico 13 并使用 ASP.NET Core 开发一个新站点。对于部署,我们利用了 Azure DevOps 管道。部署我们的新站点时,App_Data 中的所有数据都将被擦除。其中包括智能搜索索引。 所以每次部署后,我们都要初始化索引的重建。我在想我们可以添加一个脚本来在部署之前将现有的 App_Data 文件夹复制到某个临时目录,并在部署完成后将 App_Data 文件夹复制回来。 这是一个好的方法吗,根据您的经验,还有其他方法可以解决这个问题吗?

在以前的版本中,我在 App Start 上使用了 Kentico 的 global events to trigger a smart search rebuild。因此,在您部署代码后,一旦应用程序启动,智能搜索就会重建。如果您使用网络场,您可能会进行比您想要的更多的重建。

我们使用 Azure DevOps 管道,但 App_Data 文件夹在部署之间保留。

您使用的是哪个 DevOps yml 任务?

AzureRmWebAppDeployment@4 具有确保此文件夹不被删除的设置,特别是 RemoveAdditionalFilesFlagExcludeFilesFromAppDataFlag.

如果您不想使用这些,Zach 的方法很有效。

您还可以使用 ASP.NET Core startup filter,Dancing Goat 示例站点使用它在启动时重建索引。

services.AddSingleton<IStartupFilter>(new SmartSearchIndexRebuildStartupFilter());
public class SmartSearchIndexRebuildStartupFilter : IStartupFilter
{
    public Action<IApplicationBuilder> Configure(Action<IApplicationBuilder> next)
    {
        return builder =>
        {
            // Ensures smart search index rebuild upon installation or deployment
            builder.UseMiddleware<SmartSearchIndexRebuildMiddleware>();

            next(builder);
        };
    }
}