配置api到子文件夹的路由

时间:2014-02-18 19:27:43

标签: c# asp.net-mvc-4 asp.net-web-api routes

我正在使用MVC 4开发webapi。 我对路由器有疑问。 如何路由到我的网站下的子文件夹。例如:

  

www.site.com/Service

我的WebApi应用程序位于服务文件夹中。我的主页工作正常,但找不到API。

默认情况下,这是我的路线:

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

我想打电话

  

www.site.com/Service/api/ {控制器} / {ID}

有办法做到这一点吗?

[编辑] 我在Ares文件夹中添加了Service区域,因为在WebApi MVC 4的模板中已经存在一个HelpPage区域。 在这个文件夹里面我添加了控制器。

这是服务区类

public class ServiceAreaRegistration : AreaRegistration
{
    public override string AreaName
    {
        get
        {
            return "Service";
        }
    }

    public override void RegisterArea(AreaRegistrationContext context)
    {
        context.MapRoute(
            "Service_default",
            "Service/api/{controller}/{id}",
            new { id = UrlParameter.Optional }
        );
    }
}

我不知道是否有这个帮助,我的网站www.site.com只是一个网站,我添加并将此文件夹服务转换为我的iis上的应用程序。 [/编辑]

1 个答案:

答案 0 :(得分:4)

您需要创建自己的AreaRegistration,如下所示。

 public class ServiceAreaRegistration : AreaRegistration
    {
        public override string AreaName 
        {
            get{ return "Service";}
        }

        public override void RegisterArea(AreaRegistrationContext context)
        {
            context.Routes.MapHttpRoute(
                name: "ServiceDefaultApi",
                routeTemplate: "Service/api/{controller}/{id}",
                defaults: new { id = RouteParameter.Optional }
            );
        }
    }

您还需要确保在Application_Start()

中包含以下代码
AreaRegistration.RegisterAllAreas();

更新: 您的文件夹结构应如下所示:

enter image description here