Web开发

注册

 

发新话题 回复该主题

解决ASPNETCore部署到 [复制链接]

1#
专业白癜风品牌 https://jbk.39.net/yiyuanfengcai/yyjs_bjzkbdfyy/

前言

虽然ASP.NETCore应用程序是跨平台的,但我们还是经常将它部署到Windows的IIS下。当ASP.NETCore站点运行时,它会锁定正在使用的程序集,如果这时向站点目录下复制文件进行更新,会提示文件被占用的错误:

这时,必须先关闭IIS站点,才能进行更新。有什么比较简单的解决方案呢

ZipDeploy

ZipDeploy允许你压缩发布文件夹部署到正在运行的站点。这可以防止诸如ERROR_FILE_IN_USE或“被外部进程锁定”之类的错误。

下面就用一个示例程序来演示如何使用ZipDeploy。

1、安装ZipDeploy

创建一个WebAPI程序,然后引用Nuget包ZipDeploy。修改Startup.cs,增加如下代码:

publicvoidConfigureServices(IServiceCollectionservices){services.AddZipDeploy();...}2、发布应用

按照正常方式,将WebAPI程序程序发布到文件夹:

然后,创建IIS站点,将发布文件夹中的文件复制到IIS站点部署目录下。这时,应该可以正常访问站点。

3、更新应用

假设现在修改了代码,需要更新站点。再次将WebAPI程序程序发布到文件夹,但是这次不是直接将文件复制到IIS站点部署目录下。而是将bin\Release\net5.0\publish下的所有文件压缩成publish.zip文件,再将zip文件复制到IIS站点部署目录下。ZipDeploy会将publish.zip文件解压更新IIS站点,更新完成后将publish.zip改名为deployed.zip。

可以看到,更新成功,并没有任何错误:

结论

用了ZipDeploy,再也不用担心ASP.NETCore应用程序部署到IIS,更新项目时出现"文件夹正在使用"错误了!

-EOF-

推荐阅读点击标题可跳转C#实现抢红包算法.NET6.0自研轻量级ORM框架.NET6开发基于WPF的摩登三维工业软件

看完本文有收获?请转发分享给更多人

推荐

分享 转发
TOP
发新话题 回复该主题