ASP.NET Core 8 Web API:在 Azure 应用服务上收到 404,但在本地主机上工作正常

问题描述 投票:0回答:1

我正在尝试创建 ASP.NET Core 8 Web API 并将其部署到 Azure,但我总是收到以下消息:

您要查找的资源已被删除、更名或暂时不可用

以下是我的具体步骤,非常容易重现:

我创建一个空文件夹,然后在 Powershell 中将目录更改为空文件夹并执行此操作:

Write-Host "About to Create the directory" -ForegroundColor Green

mkdir dotnet8coreapi
cd dotnet8coreapi

Write-Host "About to create the solution and projects" -ForegroundColor Green
dotnet new sln
dotnet new webapi -n API --use-controllers

Write-Host "Adding projects to the solution" -ForegroundColor Green
dotnet sln add API/API.csproj

Write-Host "Executing dotnet restore" -ForegroundColor Green
dotnet restore

Write-Host "Finished!" -ForegroundColor Green

新的 ASP.NET Core 8 Web API 已创建。这是

API.csproj
文件:

<Project Sdk="Microsoft.NET.Sdk.Web">

  <PropertyGroup>
    <TargetFramework>net8.0</TargetFramework>
    <Nullable>enable</Nullable>
    <ImplicitUsings>enable</ImplicitUsings>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Swashbuckle.AspNetCore" Version="6.4.0" />
  </ItemGroup>

</Project>

我在 VS Code 中加载了创建的文件夹。请注意,我有一个解决方案文件,其中有 1 个名为

API
的文件夹,其中包含我的 ASP.NET Core 8 Web API 和控制器项目。

在终端中,我执行:

cd api; dotnet watch --no-hot-reload

一切都编译良好,VS Code 自动启动我的浏览器并显示 Swagger。我测试了默认的天气预报端点,它在本地运行良好。

我现在想将其部署到 Azure Web 应用程序。在 VS Code 中,我安装了 Azure Tools 扩展,并且登录了我的帐户。我右键单击“应用程序服务”并使用高级选项创建。我选择 .NET 8 LTS 的运行时堆栈并使用 Windows 操作系统。 Azure 应用服务已成功创建。

我现在想要将 API 文件夹部署到 Azure Web 应用服务。我右键单击新创建的 AZ Web 应用服务并选择“部署”菜单。我选择我的 API 文件夹。我没有选择

.sln
文件所在的根文件夹,我认为正确的做法是选择包含带有控制器的 ASP.NET Core 8 Web API 的
API
文件夹。部署成功。

我浏览到我的网址:

https://{name of my app}.azurewebsites.net/swagger 

我收到错误:

您要查找的资源已被删除、更名或暂时不可用

我还导航到 URL:

https://{name of my app}.net/weatherforecast 

我再次得到:

您要查找的资源已被删除、更名或暂时不可用。

我还导航至:

https://{name of my app}.net/api/weatherforecast 

并得到同样的错误。

我搜索并阅读了许多现有的 StackOverflow 类似问题,但没有找到答案。我尝试部署根文件夹和

API
文件夹并获得相同的结果。

回答一个问题,这是我的程序.cs:

var builder = WebApplication.CreateBuilder(args);

// Add services to the container.

builder.Services.AddControllers();
// Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();

var app = builder.Build();


app.UseSwagger();
app.UseSwaggerUI();


app.UseHttpsRedirection();

app.UseAuthorization();

app.MapControllers();

app.Run();

我的直觉告诉我,我需要更改新创建的 Azure Web 服务应用程序上的设置。我很困惑。有人可以帮忙吗?

谢谢,丹

azure visual-studio-code azure-web-app-service asp.net-core-webapi .net-8.0
1个回答
0
投票

我按照相同的步骤创建 Web API 并将其部署到 Azure 应用服务。

我对program.cs做了一些修改;现在,我可以成功部署应用程序了。

程序.cs:

var  builder  =  WebApplication.CreateBuilder(args);
builder.Services.AddControllers();
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();  
var  app  =  builder.Build();
app.UseSwagger();
app.UseSwaggerUI(options  =>
{
options.SwaggerEndpoint("/swagger/v1/swagger.json", "Web API V1");
if(app.Environment.IsDevelopment())
options.RoutePrefix  =  "swagger";
else
options.RoutePrefix  =  string.Empty;
}
);  
app.UseSwagger();
app.UseHttpsRedirection();
app.UseAuthorization()
app.MapControllers();
app.Run();

本地输出:

enter image description here

通过 VS Code 扩展部署。

这是输出:

enter image description here enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.