【问题标题】:.Net core application failing to upload via FTP, hosted on IIS.Net 核心应用程序无法通过 FTP 上传,托管在 IIS 上
【发布时间】:2017-09-05 23:22:39
【问题描述】:
我在通过 IIS 上托管的 FTP 部署 .net 核心应用程序时遇到问题。
我要更新的主要 DLL(核心应用程序)不会上传,FTP 只会给我一个通用权限错误消息。我认为原因是因为它们正在使用,因为然后我停止应用程序池,上传并重新启动它就可以了。
但这并不是真正的解决方案,有没有其他的发布方法可以缓解这个问题?
编辑:
“打开写入:失败”
这是我得到的唯一错误。我在网上找不到任何东西,我唯一的解决方案是重新启动应用程序池。
【问题讨论】:
标签:
asp.net
windows
iis
ftp
.net-core
【解决方案1】:
我找到了答案,我认为它应该在这里供将来使用 Google 搜索。
问题在于我最初预计 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 执行任何数据库迁移,因为您没有服务器访问权限或脚本方法。