Если я соберу свое приложение .NET Core из каталога решения на моей машине Windows dev, например:
dotnet publish --configuration Release --output \myproject --self-contained --runtime win7-x64
Я могу запустить это и попасть в свою конечную точку http://localhost:5000/api/auth/login
, не беспокойтесь.
Я делаю почти идентичную публикацию на машине Ubuntu 18.04 LTS:
dotnet publish --configuration Release --output /ubuntu-myproject --self-contained --runtime ubuntu-x64
... скопируйте файлы в папку, установите соответствующий файл проекта в исполняемый файл и запустите его, он точно так же начнет прослушивать localhost: 5000. Статические страницы (например, мой базовый index.html) обслуживаются... но все мои конечные точки API возвращают 404. Я ломаю голову, почему так. Кажется, нет никаких сообщений об ошибках или чего-то еще, как будто маршруты просто не зарегистрированы или что-то в этом роде.
Может ли кто-нибудь подсказать мне, почему это может быть так?
Это было создано с помощью .NET Core SDK 2.1.302.
ОБНОВЛЕНИЕ
Я установил ведение журнала на отладку и использовал маршрут, который, как известно, работает везде, кроме этой машины с Linux: GET /api/groups
. Я вызвал это из окна командной строки на Linux-машине:
curl -I http://localhost:5000/api/groups
мой ответ был таким:
HTTP/1.1 404 Not Found
Date: Wed, 01 Aug 2018 02:15:48 GMT
Server: Kestrel
в моем файле журнала была следующая информация о событии:
2018/08/01 02:15:49.241|INFO|Request starting HTTP/1.1 HEAD http://localhost:5000/api/groups |Microsoft.AspNetCore.Hosting.Internal.WebHost|Protocol=HTTP/1.1, Method=HEAD, ContentType=, ContentLength=, Scheme=http, Host=localhost:5000, PathBase=, Path=/api/groups, QueryString=, EventId_Id=1, EventId_Name=, EventId=1
2018/08/01 02:15:49.535|INFO|Request finished in 292.2005ms 404 |Microsoft.AspNetCore.Hosting.Internal.WebHost|ElapsedMilliseconds=292.2005, StatusCode=404, ContentType=, EventId_Id=2, EventId_Name=, EventId=2
ubuntu.18.04
? У меня были проблемы с использованием «базовой» среды выполнения, но когда я использовал конкретную, все работало нормально. Последний список поддерживаемых сред выполнения находится здесь а> - person Simply Ged   schedule 31.07.2018-I
в curl? Разве вам не понадобитсяHttpHead
в дополнение к атрибутуHttpGet
? - person Mark G   schedule 01.08.2018-I
. Используете ли вы маршрутизацию на основе соглашений или атрибутов? Можешь поделиться своим конфигом? - person Mark G   schedule 01.08.2018