asp.net-mvc的ROUTE:无法找到资源

时间:2012-08-17 06:51:54

标签: c# asp.net .net asp.net-mvc routes

我正在使用asp.net mvc,但无法访问我的网页,出现 404 错误。

页面的网址:

本地主机:2334 / RAWDATA / EiphoneNews

查看文件的位置:

根目录/视图/ RAWDATA / TNews / Index.cshtml

我的路线:

    public static void RegisterGlobalFilters(GlobalFilterCollection filters)
    {
        filters.Add(new HandleErrorAttribute());
    }

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

        routes.MapRoute(
            "Default", // Route name
            "{controller}/{action}/{id}", // URL with parameters
            new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
        );

        routes.MapRoute(
           "RawData", // Route name
           "RawData/{controller}/{action}/{id}", // URL with parameters
           new { controller = "EiphoneNews", action = "Index", id = UrlParameter.Optional }, // Parameter defaults
           new string[] { "News.Controllers.RawData" }
       );
    }




    protected void Application_Start()
    {
        AreaRegistration.RegisterAllAreas();

        RegisterGlobalFilters(GlobalFilters.Filters);
        RegisterRoutes(RouteTable.Routes);
    }

我的控制员:

namespace News.Controllers.RawData
{
    public class EiphoneNewsController : AuthorizedController
    {
        //
        // GET: /EiphoneNews/
        public ActionResult Index(int pagenum = 0, int pagesize = 20, string queryString = null)
        {...}
    }
}

2 个答案:

答案 0 :(得分:9)

交换2条路线定义:

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

    routes.MapRoute(
       "RawData", // Route name
       "RawData/{controller}/{action}/{id}", // URL with parameters
       new { controller = "EiphoneNews", action = "Index", id = UrlParameter.Optional }, // Parameter defaults
       new string[] { "News.Controllers.RawData" }
   );


    routes.MapRoute(
        "Default", // Route name
        "{controller}/{action}/{id}", // URL with parameters
        new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
    );

}

答案 1 :(得分:0)

切换路由注册,匹配的第一条路由不是RawData路由。由于在解析控制器之前确定了路由,因此默认路由导致404而RawData路由不会导致路径无效。

您可能希望安装RouteDebugger软件包(可通过nuget获取)以查看路由的运行情况。