gpt4 book ai didi

ASP.NET Core Web API 在本地运行,但不在 Azure 应用服务上运行

转载 作者:行者123 更新时间:2023-12-05 08:53:09 25 4
gpt4 key购买 nike

我一直严格按照此链接 ( https://learn.microsoft.com/en-us/aspnet/core/tutorials/first-web-api?view=aspnetcore-2.2&tabs=visual-studio ) 创建我的 Web api。

**在本地,它运行良好。测试了链接,它返回了 JSON 数据

但是,一旦我将 Web api 部署到 azure 应用程序服务,我的所有 api 链接都会返回错误 404。是否有任何我可能错过的路由?

在我的 Controller 中,我已将其添加到我的头上。

[Route("api/xxx")]
[ApiController]

在每个函数中,我都添加了这个

[HttpPut("xxx/{Id}")]

至于我的程序/启动,它与教程完全相同

  1. 程序类

    public class Program
    {
    public static void Main(string[] args)
    {
    CreateWebHostBuilder(args).Build().Run();
    }

    public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
    WebHost.CreateDefaultBuilder(args)
    .UseStartup<Startup>();
    }
  2. Startup.cs

        public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    {
    if (env.IsDevelopment())
    {
    app.UseDeveloperExceptionPage();
    }
    else
    {
    // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
    app.UseHsts();
    }

    app.UseHttpsRedirection();
    app.UseMvc();
    }

    如果您需要更多信息,请告诉我。非常感谢任何帮助,谢谢!

最佳答案

我知道答案已经帮助您解决了问题。但我也遇到过类似的情况。就我而言,我的 api 已启动并正在运行,但当我导航到 https://api.mydomain.com 时,我希望看到 Swagger 页面。显示错误 404 not found,这让我认为该应用程序无法运行。

经过几个小时的调整和打开 azure 应用程序服务调试以及日志流打开和关闭。我注意到我的应用程序中的hangfire 作业正在触发并正在运行。

所以我回去检查我的代码。

这几乎就是我所做的,让我认为应用程序服务无法正常工作。事实上,效果非常好。

启动.cs

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory, UserManager<AppUser> userManager,
RoleManager<IdentityRole> roleManager)
{
//Stripped Down for readability purpose

app.UseSwagger();
if (!env.IsProduction())
{
app.UseSwaggerUI(c =>
{
c.SwaggerEndpoint("/swagger/v1/swagger.json", "Sample API V1");
c.RoutePrefix = string.Empty;
});
}

if (!env.IsProduction())
{
app.UseHangfireDashboard();
}
else
{
app.UseHangfireDashboard("/hangfire", new DashboardOptions
{
Authorization = new[] { new HangfireAuthorizationFilter() }
});
}
app.UseHangfireServer();
}

因此,就我而言,正是这一行导致应用服务返回错误 404

app.UseSwagger();
if (!env.IsProduction())
{
app.UseSwaggerUI(c =>
{
c.SwaggerEndpoint("/swagger/v1/swagger.json", "Sample API V1");
c.RoutePrefix = string.Empty;
});
}

因为我只想仅在测试或开发环境而不是生产环境中显示 Swagger 页面。但我内心的人性期望这个招摇的页面会出现并显示。

我希望这对任何与我有同样情况的人都有帮助。

关于ASP.NET Core Web API 在本地运行,但不在 Azure 应用服务上运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54515508/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com