这是错误:
The incoming request does not match any route.
基本上我从预览1升级到预览2并且摆脱了与区域相关的大量冗余内容(如Phil Haack所述)。它没有用,所以我创建了一个全新的项目来检查它在预览2中的处理方式。文件Default.aspx
不再存在,其中包含以下内容:
public void Page_Load(object sender, System.EventArgs e)
{
// Change the current path so that the Routing handler can correctly interpret
// the request, then restore the original path so that the OutputCache module
// can correctly process the response (if caching is enabled).
string originalPath = Request.Path;
HttpContext.Current.RewritePath(Request.ApplicationPath, false);
IHttpHandler httpHandler = new MvcHttpHandler();
httpHandler.ProcessRequest(HttpContext.Current);
HttpContext.Current.RewritePath(originalPath, false);
}
我收到的错误指向行httpHandler.ProcessRequest(HttpContext.Current);
,但在较新的项目中,这些都不存在。为了测试它,我很快删除了Default.aspx
,但绝对没有任何效果,我甚至没有收到任何错误。这是一些代码提取:
的Global.asax.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Routing;
namespace Intranet
{
public class MvcApplication : System.Web.HttpApplication
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
AreaRegistration.RegisterAllAreas();
routes.MapRoute(
"Default",
"{controller}/{action}/{id}",
new { controller = "Home", action = "Index", id = "" }
);
}
protected void App_Start()
{
RegisterRoutes(RouteTable.Routes);
}
}
}
注意区域注册就像我正在使用的那样。
Routes.cs
using System.Web.Mvc;
namespace Intranet.Areas.Accounts
{
public class Routes : AreaRegistration
{
public override string AreaName
{
get { return "Accounts"; }
}
public override void RegisterArea(AreaRegistrationContext context)
{
context.MapRoute("Accounts_Default", "Accounts/{controller}/{action}/{id}", new { controller = "Home", action = "Index", id = "" });
}
}
}
查看最新文档以获取有关此部分的更多信息。这是注册该区域。 Routes.cs文件位于每个区域的根文件夹中。
干杯
答案 0 :(得分:0)
根据评论“抱歉,我正在通过示例工作,你打算使用Application_Start而不是App_Start。我不知道为什么”