繁体   English   中英

如何在ASP.NET WebAPI项目中使用MVC路由

[英]How to use MVC route in ASP.NET WebAPI project

我有一个Web API,我想添加一些asp.net页面来管理API的各个方面。

在WebApiConfig.cs文件中,我有几个路由,以下用作我捕获API的所有路由。

config.Routes.MapHttpRoute(name: "CatchAll",routeTemplate: "{controller}/{action}/{id}",defaults: new { id = RouteParameter.Optional });

我想添加一个以/ control为前缀的新部分,以推送到asp.net方面。 为此,我已将以下内容添加到RouteConfig.cs

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

然后我添加了一个标准控制器,用于管理事物。

public class ManageController : Controller
{
    public ActionResult Index()
    {

        return Content("Works");
    }
}

当我在浏览器中访问/控制/管理时,我收到以下错误。

找不到与名为'control'的控制器匹配的类型

看起来这条路线正在被完全绕过,或者充其量只是来自api路线的所有捕获它并将其优先考虑。 有没有办法,我可以让请求捕获这条路线,而无需创建一个单独的项目?

注册顺序是您需要注册的事项

public class RouteConfig {

    public static void RegisterRoutes(RouteCollection routes) {

        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

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

RouteConfig.cs之前

config.Routes.MapHttpRoute(name: "CatchAll",routeTemplate: "{controller}/{action}/{id}",defaults: new { id = RouteParameter.Optional });

WebApiConfig.cs文件中。

在你的情况下发生的是/control/manage url由CatchAll路由处理,从而将控制映射到控制器并管理一个动作

为此,按以下顺序在Global.asax中注册它们:

RouteConfig.RegisterRoutes(RouteTable.Routes);
GlobalConfiguration.Configure(WebApiConfig.Register);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM