我在带有IIS的Windows Server 2008 R2上运行Asp.Net Core MVC应用程序。但每次更新此应用程序时,我都需要在IIS中手动停止applicationPool,并在完成应用程序更新后重新启动applicationPool。否则它会打电话给我#34; xxx.dll正被其他进展使用"
有没有办法让这个过程更容易?
答案 0 :(得分:2)
没有停机时间的解决方法是:
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.htm
或app_offline.htm
。
答案 3 :(得分:0)
没有办法热交换DLL的位置。
最好的办法是每次都部署到一个新文件夹(例如版本化文件夹),并在将网站完全复制到服务器后更改IIS中的网站目录。