(路由问题)在IIS上托管.NET Core 5.0 MVC应用程序

时间:2020-11-12 09:30:20

标签: asp.net-mvc iis .net-5

当我针对.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本地语言就可以正常工作。

有什么想法吗?

1 个答案:

答案 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())
 {....}