前言:
眼前你们对“iis 目录”可能比较关怀,咱们都想要了解一些“iis 目录”的相关文章。那么小编在网上收集了一些关于“iis 目录””的相关资讯,希望我们能喜欢,看官们一起来了解一下吧!前言
虽然 ASP.NET Core 应用程序是跨平台的,但我们还是经常将它部署到 Windows 的 IIS 下。
当 ASP.NET Core 站点运行时,它会锁定正在使用的程序集,如果这时向站点目录下复制文件进行更新,会提示文件被占用的错误:
这时,必须先关闭 IIS 站点,才能进行更新。
有什么比较简单的解决方案呢?
ZipDeploy
ZipDeploy 允许你压缩发布文件夹部署到正在运行的站点。这可以防止诸如 ERROR_FILE_IN_USE 或“被外部进程锁定”之类的错误。
下面就用一个示例程序来演示如何使用 ZipDeploy。
1. 安装ZipDeploy
创建一个 Web API 程序,然后引用Nuget包ZipDeploy。
修改Startup.cs,增加如下代码:
public void ConfigureServices(IServiceCollection services){ services.AddZipDeploy(); ...}2.发布应用
按照正常方式,将 Web API 程序程序发布到文件夹:
然后,创建 IIS 站点,将发布文件夹中的文件复制到 IIS 站点部署目录下。
这时,应该可以正常访问站点。
3.更新应用
假设现在修改了代码,需要更新站点。
再次将 Web API 程序程序发布到文件夹,但是这次不是直接将文件复制到 IIS 站点部署目录下。
而是将bin\Release\net5.0\publish下的所有文件压缩成publish.zip文件,再将 zip 文件复制到 IIS 站点部署目录下。
ZipDeploy 会将 publish.zip 文件解压更新 IIS 站点,更新完成后将publish.zip改名为deployed.zip。
可以看到,更新成功,并没有任何错误:
结论
用了 ZipDeploy,再也不用担心 ASP.NET Core 应用程序部署到 IIS,更新项目时出现"文件夹正在使用"错误了!
标签: #iis 目录