我正在尝试创建 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 服务应用程序上的设置。我很困惑。有人可以帮忙吗?
谢谢,丹
我按照相同的步骤创建 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();
本地输出:
通过 VS Code 扩展部署。
这是输出: