Asp.net mvc MVC路由返回404和

Asp.net mvc MVC路由返回404和,asp.net-mvc,model-view-controller,routing,routes,Asp.net Mvc,Model View Controller,Routing,Routes,我有个问题 我正在尝试设置以下路线: routes.MapRoute( name: "PublicForms", url: "Public/Form/{*parameters}", defaults: new { controller = "Form", action = "Index", parameters = UrlParameter.Optional} ); 但

我有个问题

我正在尝试设置以下路线:

routes.MapRoute(
                name: "PublicForms",
                url: "Public/Form/{*parameters}",
                defaults: new { controller = "Form", action = "Index", parameters = UrlParameter.Optional}
               );
但它只有在传递多个参数时才起作用

例如:

工作

这不管用

它返回一个404

难道不是吗

public ActionResult Index(string parameters)
{
    // parameter comes aaa
}
如果你试着用它怎么办
在您的情况下,您正在调用FormController中不存在的名为“aaa”的操作。

以下代码经过测试: 所以它可能会做一些类似于我认为你在寻找的东西。希望能有帮助

        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
        routes.MapRoute("formPublic",
                   "Public/{*.}",
                    new { controller = "Home", action = "Index" }

                    );


        routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
        );

我找到了一种不是我想要的但有效的方法

我不能让动作保持隐式,所以我必须指定控制器和动作,并在只有一个参数的情况下添加一个额外的参数作为第一个参数

现在,如果我只使用一个参数调用服务,它不会返回404

routes.MapRoute(
                name: "OpenForm",
                url: "public/{controller}/{action}/{arg}/{*parameters}",
                defaults: new { categorySlug = UrlParameter.Optional ,subCategorySlug = UrlParameter.Optional }
            );

它也不起作用。实际上,如果我把索引放在URL中,即使有很多参数,它也会停止工作。似乎在参数之前有一个操作。通常我们使用“/”符号来分隔域项,而不是参数。通常在aspx中,这是我们传递两个参数“field2=value2”的方式符号分隔参数,但不分隔“/”。此url的最简单含义是“转到contoso.com并找到product.aspx文件以打开它。在请求时使用field1和field2参数”。我认为这将有助于uHi@Sandaru,我正在尝试做这篇文章的主题“在URL模式中处理可变数量的段”。但是,只有一个参数不起作用。还有其他路由吗?不可能通过查看单个路由来调试路由问题,您需要将所有路由作为一个整体来查看。在这种情况下,您是尝试清除缓存,还是使用单独的浏览器启动它并查看其是否工作。
routes.MapRoute(
                name: "OpenForm",
                url: "public/{controller}/{action}/{arg}/{*parameters}",
                defaults: new { categorySlug = UrlParameter.Optional ,subCategorySlug = UrlParameter.Optional }
            );