簡體   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