通过 FTP 发布 .NET Core 3.1 应用程序时出现错误代码 550

Error code 550 when publishing .NET Core 3.1 app through FTP

我有一个要在线发布的 .NET Core 3.1 应用程序 (api),我 使用发布方法 FTP 在 Visual Studio. 它工作得很好,但是当我在编码后再次尝试发布时,我总是会遇到这些错误:

我项目中的所有 dll 都会出现这种情况。我可以在工作后发布的唯一方法是完全重置我的 PC删除我项目中必须发布的所有 bin 和 obj 文件夹, 打开 VS 并发布,然后再做其他事情。

我怀疑这与我尝试发布时 VS 仍在使用 dll 的 somewhere/somehow 有关。

我试过在任务管理器中查找进程,但没有发现任何可能导致此问题的unusual/problematic。

任何关于此的帮助 将不胜感激,因为我想更新我的 API 我写的每条路线,以在部署版本上进行测试,但它是这样比较麻烦...

谢谢!

我不认为这是你的电脑。错误 550 是 FTP 错误。我认为这里发生的事情是,当您通过 FTP 发布您的网站并在浏览器中打开您的网站时,您实际上所做的是 运行 您的服务器上的应用程序。

当您的应用程序 运行ning 时,您无法修改正在使用的 DLL。

那么为什么重启电脑就能解决问题?这是因为这些托管服务提供商有一个配置,如果一段时间内没有人请求某个网站,就会终止该应用程序。这是因为节省内存和 cpu.

因此,当您重新启动电脑并删除 bin 和 obj 文件夹并重建您的项目时,这需要时间,因为在此期间没有请求发送到您的网站,您的应用程序被终止,现在您可以使用 FTP 再次.

要测试这种情况,只需关闭浏览器并且暂时不要打开您的网站,例如半小时,然后尝试通过 FTP 更新您的网站。 或者您可以重新启动您的 PC 并删除 bin 和 obj 文件夹,但在使用 FTP 推送文件之前在浏览器中打开您的站点。这必须 运行 您的应用程序并再次导致 550 错误。