C#-默认index.cshtml作为Web Api.Net Core 2.0中的起始页

C#-默认index.cshtml作为Web Api.Net Core 2.0中的起始页,c#,asp.net-web-api,asp.net-core-2.0,C#,Asp.net Web Api,Asp.net Core 2.0,我正在开发一个Web API项目,需要将其部署到linux服务器上。服务器上负载平衡器的要求是具有默认页面 因此,我创建了一个带有索引操作的主页控制器 [ApiVersion("1.0")] [Route("/[controller]")] public class HomeController : Controller { [HttpGet("/")] [Route("Home/Index")]

我正在开发一个Web API项目,需要将其部署到linux服务器上。服务器上负载平衡器的要求是具有默认页面

因此,我创建了一个带有
索引
操作的
主页
控制器

[ApiVersion("1.0")]
[Route("/[controller]")]
public class HomeController : Controller
{
   [HttpGet("/")]
   [Route("Home/Index")]
   public IActionResult Index()
    {
            return View();
    }
}
更改startup.cs中的配置方法

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
 {
     if (env.IsDevelopment())
      {
         app.UseDeveloperExceptionPage();
      }

      app.UseDefaultFiles();
      app.UseStaticFiles();
      app.UseMvc();

}
现在,在这些更改之后,如果我在本地
IIS
中部署应用程序,它可以正常工作,并在访问URL localhost:801时加载默认视图Home/Index

但是如果我把它部署在linux上,它会给出一个503错误,并且日志中也有不同的错误

Microsoft.AspNetCore.Routing.Tree.TreeRouter[1]请求成功 已将路由与名称“(null)”和模板“”匹配

Microsoft.AspNetCore.Mvc.Versioning.ApiVersionActionSelector[2] 操作'UMD.VAST.WebAPI.Controllers.HomeController.Index (UMD.VAST.WebAPI)“id为”b83c6143-cd71-4847-90e8-14a963a8ce31”的 不符合约束条件

'Microsoft.AspNetCore.Mvc.Internal.HttpMethodActionConstraint' Microsoft.AspNetCore.Mvc.Internal.MvcAttributeRouteHandler[3]否 操作与当前请求匹配。路线值: Microsoft.AspNetCore.Builder.RouterMiddleware[1]请求不匹配 任何路线。 Microsoft.AspNetCore.Mvc.Routing.DefaultAPVersionRoutePolicy[5] 找到多个候选操作,但没有一个与请求的操作匹配 服务API版本“1.0”。候选行动: UMD.VAST.WebAPI.Controllers.HomeController.Index(UMD.VAST.WebAPI) Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware[0] 执行请求时发生未处理的异常 System.NullReferenceException:对象引用未设置为实例 指一个物体。在 Microsoft.AspNetCore.Http.Extensions.UriHelper.GetDisplayUrl(HttpRequest (请求)在 Microsoft.AspNetCore.Mvc.Routing.DefaultApersionRoutePolicy.ClientError(RouteContext 上下文、操作选择结果选择结果)


我不知道为什么它不能与
webapi
Controller一起工作,但是我通过使用MVC控制器来修复索引页。控制器的其余部分是Web Api控制器

MVC路由的Configure方法中的代码为

 app.UseMvc(routes =>
  {
      //Home
      routes.MapRoute(
         name: "home",
         template: "{controller}/{action}/{id?}",
         defaults: new { controller = "Home", action = "Index" });
  });

对于Web Api控制器,我正在使用属性routing

您是否尝试在生产环境中运行vs?您还尝试过在linux服务器的控制台中检查错误吗?它在visual studio的发布和调试模式下工作。在Linux服务器上,它说:请求和任何路由都不匹配,不仅仅是发布模式。您还需要在生产环境中进行尝试。您可以复制这些现有配置文件,并使用
“ASPNETCORE\u环境”:“Production”
创建一个新的配置文件。关于linux,您在哪里看到错误?不匹配的路由也可能意味着它无法到达默认的错误页面位置。通常在生产环境中,它被设计为在浏览器中显示错误页面,并在控制台更改路由到[路由(“api/[控制器]”)中显示错误日志列表