部署到 Azure 后收到 404

Ofe*_*Gal 8 azure webdeploy azure-web-app-service asp.net-core

我能够成功对 Azure 应用服务执行 Web 部署,但随后找不到 Web 应用程序。

我部署了一个在本地运行良好的 ASP.NET Core 2.2 Web 应用程序。在门户网站上,没有任何问题显示出来。当我通过例如调用它时,

https://xxxxxxxxx.azurewebsites.net/api/values 
Run Code Online (Sandbox Code Playgroud)

我收到错误:

您正在查找的资源已被删除、更名或暂时不可用。(404)

tom*_*dox 6

API 项目的另一个问题是,它们的 UI(通常是 Swagger UI)可能仅在开发期间可用,但在部署后就不再可用。

要检查这一点,请查看 Startup.cs 中是否有基于env.IsDevelopment()检查有条件运行的任何代码。例如,.NET Core Web API 模板添加以下代码:

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    if (env.IsDevelopment())
    {
        app.UseDeveloperExceptionPage();
        app.UseSwagger();
        app.UseSwaggerUI(c => c.SwaggerEndpoint("/swagger/v1/swagger.json", "WebApplication6 v1"));
    }
Run Code Online (Sandbox Code Playgroud)

如果您将该项目的 API URL 放入开发计算机上的浏览器中,您将看到预期的 Swagger API。但是,如果您对该应用程序的部署版本执行相同的操作,您将得到 404,因为这env.IsDevelopment不再是正确的。

还有一些其他情况也可能导致该线程出现 404 错误


Moh*_*rma 0

原因是部署或默认的 ASP.NET Core Web API 模板不包含网站根目录中的默认文档。例如,index.htm、defualt.aspx、default.htm是默认文档,如果访问URL时没有提供特定文件,IIS将传递它们。

您可以将这些文件之一放入网站的根目录中,或者通过附加或默认添加到 ASP.NET Core Web API 的末尾来直接wwwroot请求,然后您应该会收到 JSON 或 XML 响应正如预期的那样。ASP.NET Core Web API/api/<methodname>api/values

希望能帮助到你。