【问题标题】: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 文件
【解决方案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