如何更新正在运行的asp.net核心应用程序?

时间:2017-05-13 09:08:10

标签: deployment asp.net-core redeploy

我在带有IIS的Windows Server 2008 R2上运行Asp.Net Core MVC应用程序。但每次更新此应用程序时,我都需要在IIS中手动停止applicationPool,并在完成应用程序更新后重新启动applicationPool。否则它会打电话给我#34; xxx.dll正被其他进展使用"

有没有办法让这个过程更容易?

4 个答案:

答案 0 :(得分:2)

没有停机时间的解决方法是:

  1. 将正在运行的 .NET 核心应用程序 dll 重命名为 filename.dll.backup
  2. 上传新的 .dll(Web 应用程序可用并在上传文件时为请求提供服务)
  3. 上传完成后,请回收应用程序池。需要对服务器的 RDP 访问权限或在您的托管控制面板中回收应用程序池的功能。

IIS 在回收时与应用程序池重叠,因此在回收期间通常不会出现任何停机时间。因此,在每个人都不知道应用程序池已被回收的情况下,请求仍然会进来,并且请求可以无缝地提供服务,没有停机时间。

我仍在寻找比这更好的方法..!! :)

答案 1 :(得分:1)

在编辑器中打开web.config文件并保存它将导致Web应用程序重新加载,即使您没有更改任何内容。所有DLL都应该是可替换的,直到用户访问该站点,导致Web应用程序再次启动。我有时会将其用作解决方法。

更完整的解决方案是使用Web Deploy,通过Visual Studio或命令行。这可能需要一段时间来设置,但提供更多的自动化。

https://docs.microsoft.com/en-us/aspnet/core/publishing/iis#deploy-the-application-1

答案 2 :(得分:1)

最后我找到了我的回答:
我只需要将一个名为app_offline.htm的文件添加到IIS Web根目录(而不是您的项目wwwroot文件夹)。 由于this issue,您可能需要同时尝试App_Offline.htmapp_offline.htm

答案 3 :(得分:0)

没有办法热交换DLL的位置。

最好的办法是每次都部署到一个新文件夹(例如版本化文件夹),并在将网站完全复制到服务器后更改IIS中的网站目录。