Я пытаюсь развернуть шаблон веб-API Asp.net в приложении-контейнере Azure. Развертывание завершилось успешно, но когда я перемещаюсь по URL-адресу, он возвращает ошибку 404.
Я включил внешний трафик, но все равно не работает, что-то упустил?
Он сообщает, что это работает только в том случае, если в среде для внутреннего свойства установлено значение false. Но я не могу найти эту недвижимость
Классическая ошибка 404 недоступна
попробуйте добавить путь /weatherforecast
после URL. если вы используете шаблон VS веб-API. потому что это путь, по которому размещена страница
Я создал шаблон ASP.NET Core Web API
VS и развернул в контейнере приложения.
Это структура моего проекта:
По умолчанию Dockerfile
:
#See https://aka.ms/customizecontainer to learn how to customize your debug container and how Visual Studio uses this Dockerfile to build your images for faster debugging.
FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS base
USER app
WORKDIR /app
EXPOSE 8080
EXPOSE 8081
FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build
ARG BUILD_CONFIGURATION=Release
WORKDIR /src
COPY ["WebApplication1/WebApplication1.csproj", "WebApplication1/"]
RUN dotnet restore "./WebApplication1/WebApplication1.csproj"
COPY . .
WORKDIR "/src/WebApplication1"
RUN dotnet build "./WebApplication1.csproj" -c $BUILD_CONFIGURATION -o /app/build
FROM build AS publish
ARG BUILD_CONFIGURATION=Release
RUN dotnet publish "./WebApplication1.csproj" -c $BUILD_CONFIGURATION -o /app/publish /p:UseAppHost=false
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "WebApplication1.dll"]
Это моя конфигурация приложения-контейнера.
OUTPUT
:На URL-адресе выдается ошибка 404, поскольку API не размещен на домашнем пути.
API размещается по пути ('/')
.
Чтобы добавить swagger, вам нужно добавить в себя этот код /weatherforecast
Program.cs
он сгенерирует файл swagger на основе маршрутизатора/контроллера/модели, используемого в проекте, для рендеринга пользовательского интерфейса Swagger при сборке веб-API.
swagger.SwaggerEndpoint("/swagger/v1/swagger.json", "Web API 1");
добавляется для производственной среды, такой как Azure или любых других облачных сервисов.
if (app.Environment.IsDevelopment()|| app.Environment.IsProduction())
{
app.UseSwagger();
app.UseSwaggerUI(swagger =>
{
swagger.SwaggerEndpoint("/swagger/v1/swagger.json", "Web API 1");
});
}
Он доступен по пути app.Environment.IsProduction()
Я использую swagger, поэтому попытался добавить /swagger/index.html, но все равно 404
@MatteoBeretta Я обновил свой ответ в соответствии с вашим требованием использовать файл swagger.
Спасибо, я так остолбенел, я сосредоточился на проблеме с сетью.
Я рад, что это помогло тебе
Какую ошибку вы получаете?