Razor MVC5路由到404

Razor MVC5路由到404,razor,visual-studio-2013,asp.net-mvc-5,Razor,Visual Studio 2013,Asp.net Mvc 5,我有一个传统的WebForms网站,我正在尝试添加新的MVC5页面 我正在运行VS Express 2013/IISExpress 我已按照这些页面中的说明进行操作: 我在我的项目上运行了Manage NuGet软件包,并安装了ASP.NET MVC和所有依赖项 我添加了对System.Web.Routing、System.Web.Mvc和System.Web.Razor的引用,创建了一个基本视图和控制器 一切都在构建和运行 我可以设置断点,并在应用程序启动时看到正在按如下方式创建我的路由:

我有一个传统的WebForms网站,我正在尝试添加新的MVC5页面

我正在运行VS Express 2013/IISExpress

我已按照这些页面中的说明进行操作:

我在我的项目上运行了Manage NuGet软件包,并安装了ASP.NET MVC和所有依赖项

我添加了对System.Web.Routing、System.Web.Mvc和System.Web.Razor的引用,创建了一个基本视图和控制器

一切都在构建和运行

我可以设置断点,并在应用程序启动时看到正在按如下方式创建我的路由:

    private void RegisterRoutes(RouteCollection routes)
    {
        routes.MapHttpRoute(
            "AdminPages",
            "Admin/{controller}",
            new { controller = "Dashboard" }
            );
    }
我尝试添加属性路由,如下所述:

控制器:

 namespace ConnectBusiness.Controllers
 {
     [RoutePrefix("Admin")]
     [Route("{action=index}")]
     public class DashboardController : Controller
     {

         // Dashboard/Index
         public ActionResult Index()
         {
             return View();
             //return View("~/MVC5/Views/Administration/Dashboard.cshtml");
         }
     }
 }
Web.config具有以下处理程序实体:

  <remove name="ExtensionlessUrlHandler-Integrated-4.0" /><remove name="OPTIONSVerbHandler" /><remove name="TRACEVerbHandler" />
  <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
但是当我尝试导航到我认为正确的URL时,我总是被重定向到default.aspx,结果是404:

http://localhost:57330/Admin/Dashboard->http://localhost:57330/Admin/Dashboard/default.aspx->404

知道是什么导致404重定向,以及我如何成功导航到我的控制器吗

在Views/Dashboard/index.cshtml中是否有索引视图?如果您点击索引操作,它将查找该文件

是否已启用属性路由?确保在基于约定的路由之前启用它,以便它首先匹配属性路由

 public static void RegisterRoutes(RouteCollection routes)
 {
     routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

     //enabling attribute routing
     routes.MapMvcAttributeRoutes();

     //convention-based routing
     /routes.MapRoute(
     name: "Default",
     url: "{controller}/{action}/{id}",
     defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional });
 }
如果希望URL为localhost:57330/Admin/Dashboard,请尝试以下操作:

[RoutePrefix("Admin")]
[Route("{action=index}")]  //default action
public class DashboardController : Controller
{

   // route: /Admin/Dashboard
   [Route("Dashboard")]
   public ActionResult Index()
   {
       return View();
   }
}

按照您的设置方式,我认为URL应该是localhost:57330/Admin或localhost:57330/Admin/Index

这是由于配置中安装了UrlRewritingNet造成的

经验教训:删除其他Url重写器,让MVC处理Url重写