簡體   English   中英

具有相同控制器名稱的WebAPI MVC區域

[英]WebAPI MVC Areas with same controller name

webapi的結構如下:

App
   -Area
       -MyArea1
         - ControllerA (Route('api/myarea1/controllera'))
       -MyArea2
         - ControllerA  (Route('api/myarea2/controllera')) 

問題是路由api / myarea1 / controllera和api / myarea2 / controllera無法解析。 它是404。

我在某個地方閱讀了我們需要實現IHttpControllerSelector的內容,但不確定實現此目的的最簡單方法是什么。 如果還有其他方法可以完成?

任何想法。

編輯:RouteConfig.cs

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

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

WebApiConfig.cs

public static class WebApiConfig
    {
        public static void Register(HttpConfiguration config)
        {
            // Web API configuration and services

            config.MapHttpAttributeRoutes();

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

編輯2:

   public override void RegisterArea(AreaRegistrationContext context) 
   {
        context.MapHttpRoute(
            name : "MyArea1_default",
            routeTemplate : "MyArea1{controller}/{action}/{id}",
            defaults : new { action = "Index", id = UrlParameter.Optional }
        );
    }

如果要使用具有相同名稱的控制器,則需要為每個路由配置指定名稱空間。

public override void RegisterArea(AreaRegistrationContext context) 
{
    context.MapHttpRoute(
        name : "MyArea1_default",
        routeTemplate : "MyArea1{controller}/{action}/{id}",
        defaults : new { action = "Index", id = UrlParameter.Optional },
        namespaces: new[] { "Your.Controller.Namespace.Here" }  
    );
}

供您參考: http : //haacked.com/archive/2010/01/12/ambiguous-controller-names.aspx/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM