Код ошибки 550 при публикации приложения .NET Core 3.1 через FTP

#asp.net #.net #asp.net-core #ftp #publishing

Вопрос:

У меня есть приложение .NET Core 3.1 (api), которое я публикую в Интернете, и я использую метод публикации FTP в Visual Studio. Он отлично работает, но когда я пытаюсь опубликовать снова после кодирования, я всегда получаю эти ошибки:

  • Папка публикации /…
  • Не удалось добавить «Автоматический».dll » на веб-сайт. Процесс не может получить доступ к файлу, поскольку он используется другим процессом (550).
  • Не удалось добавить ‘projectname.API.dll» на веб-сайт. Процесс не может получить доступ к файлу, поскольку он используется другим процессом (550).
  • Не удалось добавить » имя проекта.Domain.dll-на веб-сайт. Процесс не может получить доступ к файлу, поскольку он используется другим процессом (550).

Это продолжается довольно долго во всех библиотеках DLL в моем проекте. Единственный способ, которым я могу опубликовать после работы, — это полностью перезагрузить компьютер, удалить все папки bin и obj в моих проектах, которые должны быть опубликованы, открыть VS и опубликовать, прежде чем делать что-либо еще.

Я подозреваю, что это связано с тем, что VS все еще использует dll где-то/как-то, пока я пытаюсь опубликовать.

Я пытался найти процессы в диспетчере задач, но не видел ничего необычного/проблемного, что могло бы вызвать это.

Любая помощь в этом будет очень признательна, потому что мне нравится обновлять свой API для каждого маршрута, который я пишу, чтобы протестировать на развернутой версии, но это довольно хлопотный путь…

Спасибо!

Комментарии:

1. Сервер, на который вы отправляете свои файлы по FTP, это windows? Вы используете общий хост?

2. @MrMoeinM Сервер не является проблемой, он поддерживает хостинг dot net и отлично работает для других проектов. И нет, на данный момент для этого проекта приложение .net core размещается отдельно, а не с какими-либо другими службами на сервере. Я почти уверен, что проблема на моей стороне, когда я пытаюсь опубликовать ее, хотя, поскольку перезагрузка моего компьютера исправляет это.

3. Хорошо, но мне нужно знать, что это ваш сервер Windows и использует IIS в качестве веб-сервера или нет?

4. Я размещаю через этот сайт somee.com/FreeAspNetHosting.aspx по бесплатному плану. Это Windows, я думаю, это не IIS, просто ASP.Net Ядро 3.1 работает

Ответ №1:

Я не думаю, что это ваш компьютер. Ошибка 550-это ошибка FTP. Я думаю, что здесь происходит то, что, когда вы публикуете свой веб-сайт через FTP и открываете свой веб-сайт в браузере, на самом деле вы запускаете приложение на своем сервере.

Когда ваше приложение запущено, вы не можете изменять используемые библиотеки DLL.

Так почему же перезагрузка вашего компьютера устранит проблему? Это связано с тем, что у этих хостинг-провайдеров есть конфигурация, которая, если какое-то время никто не запрашивает веб-сайт, затем убивает приложение. это происходит из-за экономии памяти и процессора.

Поэтому, когда вы перезагружаете компьютер, удаляете папки bin и obj и перестраиваете свой проект, что требует времени, и поскольку в то же время на ваш веб-сайт не отправляется запрос, ваше приложение будет удалено, и теперь вы можете снова обновить свой веб-сайт с помощью FTP.

Чтобы проверить этот сценарий, просто закройте браузеры и не открывайте свой веб-сайт в течение получаса, а затем попробуйте обновить свой веб-сайт через FTP. Или вы можете перезагрузить компьютер и удалить папки bin и obj, но прежде чем отправлять файлы по FTP, откройте свой сайт в браузере. Это должно запустить ваше приложение и снова вызвать ошибку 550.

Комментарии:

1. Я нашел способ вручную остановить хостинг, а затем опубликовать свою работу. Это все исправило! Теперь я могу публиковать без проблем. Это вызвало бы у меня много проблем, если бы api был доступен для других, спасибо! Теперь я создам окно обслуживания и запланирую обновления в течение этого периода. 🙂