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