部署 dotnetcore 5 web api 到 iis 给出 404

Deploying dotnetcore 5 web api to iis gives 404

我有一个带有 .NET 5 的 Web API 项目(直接从 visual studio Asp.NET Core Web API 的模板创建),当从 Visual studio 进行调试,尝试将其部署到安装了 .NET 5 托管捆绑包的 IIS 服务器,部署显然运行良好,但是当我输入 url 时,我有一个 404。有一个单独的 MVC .NET 5 项目,我以相同的方式部署它并且运行良好。

想知道是否有人可以指出我正确的方向,找不到我在这里缺少的东西。

搜索并弄乱 Startup.cs 文件后,我注意到

    app.UseSwagger();
    app.UseSwaggerUI(c => c.SwaggerEndpoint("/swagger/v1/swagger.json", "api v1"));

在验证 if(env.IsDevelopment()) 中,但是 api 端点工作得很好,只是它不起作用,因为我看不到 Swagger网站,可能是因为您不想向所有人公开您的 api...感觉我在某处遗漏了一些解释,但现在一切都很好。

如果您已经将NET5API部署到本地IIS进行开发建议,您应该使用web.config文件

将环境设置为开发
<aspNetCore processPath="dotnet" arguments=".\NewDealerWebAPI.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" hostingModel="inprocess" >
          <environmentVariables>
            <environmentVariable name="ASPNETCORE_ENVIRONMENT" value="Development" />
          </environmentVariables>
      </aspNetCore

遇到了同样的问题。配置后,尝试浏览时出现404错误。

原因是,Swagger 页面将仅针对开发环境进行如下配置(在 Startup.cs 中)。

 if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
                app.UseSwagger();
                app.UseSwaggerUI(c => c.SwaggerEndpoint("/swagger/v1/swagger.json", "AppName v1"));
        }

如果我们输入正确的 url,API 将可用。 如果您还想查看 Swagger 文件

  • 要么更改 startup.cs 中的代码,删除对

    的检查

    if (env.IsDevelopment())

  • 或者在您的 web.config 文件中将环境设置为开发。

您可以按照本网站上的步骤解决您的问题。

https://docs.microsoft.com/en-us/aspnet/core/tutorials/getting-started-with-swashbuckle?view=aspnetcore-3.1&tabs=visual-studio