使用Azure DevOps CD更新基于ASP.NET零dotnet核心的Webapp的Hotswap DLL问题

问题描述 投票:1回答:1

我们正在使用基于dotnet core 3.1.x构建的ASP.NETZero模板为我们的客户构建一个Webapp。>

我正在尝试在Azure DevOps中创建发布管道,并且在将构建管道的更改发布到IIS时遇到了问题,这与我对基于传统MVC5或MVC6 .NET Framework的Webapp所做的类似。

自托管的devops代理与发布Webapp的生产服务器不在另一台计算机上运行,​​并且代理服务帐户只能访问\\ server \ inetpub-sharedhostingdir

的共享路径。

通常,Copy Files任务可以替换应用DLL和所有其他文件,但是在.NETCore中,出现如下错误:

enter image description here

然后我发现这是由于.NET Core 3.1.x托管工作方式的更改。

我也尝试在webapp的web.config中使用'OutOfProcess',但仍然遇到相同的错误,然后我发现了此SO帖子和@MindingData提供的DLL热插拔信息。

因此,我目前解决此问题的方法是在CD中使用远程Powershell;我可以停止webapp并发布新的工件。但是此步骤需要花费一定的成本,我必须停止站点并替换所有DLL,这大约需要30秒钟。

enter image description here

远程Azure DevOps代理目前无权执行此操作,但是我们必须添加防火墙例外。

我想知道是否还有其他有效的替代方法可以使用在远程服务器上运行的AzureDevOps代理发布.NETCore 3.1.x Webapp? (由于生产服务器的访问受到限制,我们无法在生产计算机上部署Azure代理。)

由于当前这些问题,我需要手动移动'backup'目录中的所有DLL以使托管目录为空,然后,如果我运行第一个映像的管道,则'Copy Files To'成功运行并很好地发布了该应用程序。

关于在当前环境中改进CD的任何建议?

[我们正在使用基于dotnet core 3.1.x构建的ASP.NETZero模板为客户构建Web应用程序,我试图在Azure DevOps中创建发布管道,并在发布更改时遇到问题...

asp.net-core iis azure-devops continuous-deployment azure-pipelines-release-pipeline
1个回答
0
投票

您可以尝试使用'app_offline.htm'文件来正常关闭正在运行的应用程序,并且在部署之后,您可以使用powershell命令任务轻松删除该文件。

© www.soinside.com 2019 - 2024. All rights reserved.