我在通过托管在 IIS 上的 FTP 部署 .net 核心应用程序时遇到问题。
我想更新的主要 DLL(核心应用程序)无法上传,FTP 只是给我一个通用的权限错误消息。我认为原因是因为它们正在使用中,因为那时我停止了应用程序池,上传并重新启动它工作正常。
但这并不是真正的解决方案,是否有任何其他发布方法可以缓解此问题?
编辑:
"open for write: failure"
是我遇到的唯一错误。我在网上找不到任何东西,唯一的解决办法是重新启动应用程序池。
最佳答案
我找到了一个答案,我想它应该在这里以供将来谷歌搜索。
问题正如我最初预期的那样,IIS 将请求代理到 kestrel,这意味着就 Windows 而言,该进程正在使用中。共有三种解决方案。
好的解决方案
在负载均衡器后面的 Azure 上有两个(或更多)虚拟机。有一个脚本可以一次关闭一个网站,做它需要做的事情然后重新打开它们。正确执行此操作,无需停机!
中场休息
在我谈论其他解决方案之前稍微解释一下。我已经很长时间没有使用 .NET 了,但显然你可以在添加 app_offline.htm
的地方做这件事,它会暂时为你关闭网站。
在 IIS 和 .Net Core 的上下文中,它还释放了进程,这非常有用,因为它解决了我的问题!尽管我必须先访问网页才能生效,除非我弄错了。
糟糕的解决方案
使用自动脚本将 _app_offline.htm
重命名为 app_offline.htm
。进行升级,然后还原该更改。使您的网站关闭,有点丑陋,但脚本总是比...好。
丑陋的解决方案
您只能访问 FTP,没有远程管理员或适当的部署过程,因为...原因。
上传 app_offline.htm
,尽可能少上传,希望在删除或重命名 app_offline.htm
之前不会破坏任何内容。
此外,您还必须使用 EnableAutomaticMigrations = true
执行任何数据库迁移,因为您没有服务器访问权限或脚本方法。
关于asp.net - .Net 核心应用程序无法通过 FTP 上传,托管在 IIS 上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46064616/