使用 FTP/shared 文件夹部署 ASP.NET 核心网站时如何不出现 "ERROR_FILE_IN_USE " 错误?

How to not get "ERROR_FILE_IN_USE " error when deploying a ASP.NET Core website using FTP/shared folder?

我有一个面向 .net framework 4.52

ASP.NET Core RTM Web 应用程序

在我的project.json

"frameworks": {
    "net452": {}
  },

当我将它发布到一个文件夹时,它会创建一个 MyWebApplication.exe,当我在我的浏览器中访问该应用程序时,exe 是 运行。

我需要将网站发布到具有 Windows Server 2012IIS8

的网络服务器

我可以通过 VPN 访问网站部署目录的共享文件夹。

我第一次将站点发布到文件夹时它运行正常。我访问网站 url 并加载网站。但是,当我想在进行更改并复制文件后重新发布网站时,它告诉我 MyWebApplication.exe 正在使用中并且发布失败。

我知道如何解决这个问题的唯一方法是在发布之前关闭网络服务器上任务管理器中的 MyWebApplication.exe。但是,由于我只能通过共享目录访问该服务器,所以这是不可能的。

使用 ASP.NET 4 个网站我没有这个问题。

使用 ASP.NET CORE RC1 我也没有问题,因为它使用 dnx 虽然 HTTPPlatformHandler 允许我复制站点而不必杀死 dnx.exe.我只需触摸 web.config,网站就会重新启动。

我的问题是:

  1. 是否可以复制 over/publish 已部署站点的新更改版本(FTP 或通过共享文件夹访问)?

  2. 有没有办法停止网站,例如通过 FTP 或通过共享文件夹访问从网络服务器上的内存中卸载 MyWebApplication.exe?

ERROR_FILE_IN_USE 错误是 github

上的 open issue

发布前删除web.config发布目录即可。

如果没有 web.config,站点将自动停止并从内存中卸载文件,并阻止任何人再次将站点加载到内存中以访问 URL。

另一种解决方法是将 app_offline.htm 复制到您的发布目录,这应该也可以。 Link

我通过在主机上停止我的网络应用程序来解决这个问题。全部发布成功后

您应该将此添加到您的发布个人资料:

<EnableMSDeployAppOffline>True</EnableMSDeployAppOffline>

根据https://github.com/dotnet/aspnetcore/issues/3719