【问题标题】:Deploying dotnetcore 5 web api to iis gives 404将 dotnetcore 5 web api 部署到 iis 给出 404
【发布时间】:2021-03-20 21:42:09
【问题描述】:

我有一个 .NET 5 的 Web API 项目(直接从 Visual Studio Asp.NET Core Web API 的模板创建),它在从 Visual Studio 调试时工作得很好,试图将它部署到 IIS 服务器,它有安装了 .NET 5 的 Hosting Bundle,部署显然运行良好,但是当我输入 url 时,我有一个 404。有一个单独的 MVC .NET 5 项目,我以相同的方式部署它,它运行得很好。

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

【问题讨论】:

    标签: .net-core webapi swashbuckle.aspnetcore


    【解决方案1】:

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

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

    在验证 if(env.IsDevelopment()) 中,但是 api 端点工作得很好,只是因为我无法看到 Swagger 站点,所以它不起作用,可能是因为你没有想把你的 api 公开给大家……感觉好像我在某个地方错过了一点解释,但现在一切都很好。

    【讨论】:

    • 我拉了几天头发。但最后,这奏效了。谢谢
    【解决方案2】:

    面临同样的问题。配置后,尝试浏览时出现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 文件中将环境设置为 Development。

    【讨论】:

      【解决方案3】:

      如果您已将NET5 API部署到本地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
      

      【讨论】:

        【解决方案4】:
        猜你喜欢
        • 2016-09-13
        • 2015-08-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-04-15
        • 2021-03-22
        • 1970-01-01
        • 2017-02-24
        相关资源
        最近更新 更多