2014-02-18 36 views
2

我正在開發使用MVC 4的webapi。 我對路由器有疑問。 如何路由到我的網站下的子文件夾。例如:配置路由到api到子文件夾

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/{controller}/{id}

有沒有辦法做到這一點?

[編輯] 我加入服務區域劃分爲戰神文件夾,因爲在模板的WebAPI MVC 4 這個文件夾我加入了controlers內已經存在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應用程序。 [/編輯]

回答

3

您需要創建自己的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

+0

至極命名空間我要補充這類? –

+1

你可以把'ServiceAreaRegistration'類放在'Global.asax'文件中。 – Lin

+0

我在我的項目中添加了一個區域,我確定我在Application_Start()上有該代碼。它沒有工作。 =/ –