Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net core 使用Azure DevOps CD更新基于ASP.NET Zero dotnet core的Web应用程序的热交换DLL问题_Asp.net Core_Iis_Azure Devops_Continuous Deployment_Azure Pipelines Release Pipeline - Fatal编程技术网

Asp.net core 使用Azure DevOps CD更新基于ASP.NET Zero dotnet core的Web应用程序的热交换DLL问题

Asp.net core 使用Azure DevOps CD更新基于ASP.NET Zero dotnet core的Web应用程序的热交换DLL问题,asp.net-core,iis,azure-devops,continuous-deployment,azure-pipelines-release-pipeline,Asp.net Core,Iis,Azure Devops,Continuous Deployment,Azure Pipelines Release Pipeline,我们正在使用基于dotnet core 3.1.x构建的ASP.NETZero模板为我们的客户构建一个webapp 我试图在Azure DevOps中创建发布管道,但在将构建管道的更改发布到IIS时遇到了一些问题,这与我在传统的MVC5或MVC6.NET基于框架的Web应用程序中所做的类似 自托管devops代理运行在与发布webapp的生产服务器不同的计算机上,并且代理服务帐户只能访问\\server\inetpub sharedhostingdir的共享路径 传统上,task可以替换应用程序

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

我试图在Azure DevOps中创建发布管道,但在将构建管道的更改发布到IIS时遇到了一些问题,这与我在传统的MVC5或MVC6.NET基于框架的Web应用程序中所做的类似

自托管devops代理运行在与发布webapp的生产服务器不同的计算机上,并且代理服务帐户只能访问\\server\inetpub sharedhostingdir的共享路径

传统上,task可以替换应用程序DLL和所有其他文件,但在.NETCore中存在如下错误:

然后我发现这是因为.NETCore3.1.x主机的工作方式发生了变化

我还尝试在webapp的web.config中使用“”,但仍然得到相同的错误,然后我找到了@MindingData提供的此帖子和DLL热交换信息

因此,我目前克服这个问题的最佳方法是在CD中使用远程powershell;我可以停止webapp并发布新工件。但这一步是有成本的,我必须停止该站点并更换所有DLL,这大约需要30秒

远程Azure DevOps代理现在没有访问权限,但我们必须添加防火墙例外才能这样做

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

由于这些问题,目前我需要手动移动“备份”目录中的所有DLL,以使托管目录为空,然后如果我运行第一个映像的管道,“将文件复制到”将成功运行并发布应用程序


对于在当前环境中改进CD有何建议?

您可以尝试使用“app\u offline.htm”文件以正常关闭正在运行的应用程序,部署后,您可以使用powershell命令任务轻松删除该文件

这种方法应该在您可以访问远程服务器的部署目录时起作用。文章中提到了这些步骤