当我针对.NET 5框架部署WebApi和/或ASP.NET MVC应用程序时遇到问题。
我创建了站点和应用程序池,并设置了绑定。应用程序池设置为无托管代码,管道设置为集成。 我正在使用与所有其他.NET Core 3.x应用程序相同的配置-我们有20-30个应用程序和WebApis。
当我尝试打开URL时,我从服务器收到404错误。我发现必须存在路由问题。当我打电话作为特定操作(https:// myurl / home / index)时,我确实从服务器获得了正确的响应。
我在IIS Web服务器上安装了ASP.NET Core Runtime 5.0.0(托管包)。最初,我开始使用.NET 5 RC1创建的.NET 5 WebApi遇到此错误。 因此,我创建了一个新的默认MVC应用程序并将其部署到同一服务器上。同样的问题。
使用IIS Express本地语言就可以正常工作。
有什么想法吗?
答案 0 :(得分:0)
我找到了问题的根源。 如果环境不是开发环境,则默认情况下,新创建的.NET 5 Web API项目默认隐藏大张旗鼓:
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
app.UseSwagger();
app.UseSwaggerUI(c =>
{
c.SwaggerEndpoint("/swagger/v1/swagger.json", "Version 1.0");
c.RoutePrefix = string.Empty;
});
}
这当然是wep api本身可以工作的原因(例如与邮递员一起使用),但为什么在尝试在浏览器中打开Swagger时却收到404错误。
因此,就我而言,我仅在生产环境中禁用Swagger:
if (!env.IsProduction())
{....}