2015-05-13 157 views
0

我想用在我的控制器以下幾點:REST API路由

[Route("api/{controller}/{action}")] 

而不是使用RouteTable.Routes.MapHttpRoute(...)。問題是它說Route不是屬性類。我已經包括以下庫:

using System.Web.Http; 
using System.Web.Http.Description; 
using System.Web.Http.Controllers; 
using System.Web.Routing; 
using AttributeRouting.Web.Http; 
using System.Web.Mvc; 

我有Microsoft.Aspnet.Mvc 5.2.3Web API 2.2。我試圖按照這種http://blogs.msdn.com/b/webdev/archive/2013/10/17/attribute-routing-in-asp-net-mvc-5.aspx並添加

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

,但它說,IgnoreRouteMapMvcAttributeRoutes不存在..我在做什麼錯? 感謝

+0

'System.Web.Mvc'和'System.Web.Http'命名空間都有屬性'Route'。嘗試刪除對'System.Web.Mvc'的引用或'RouteAttribute'的顯式名稱空間 – Zen

+0

如上所述,嘗試將[System.Web.HttpRoute(「api/{controller}/{action}」)]顯式引用它正確的命名空間。 – nik0lias

回答

0

在網頁API,你可以使用屬性RoutePrefix,作爲前綴適用於所有的控制器動作

你可以這樣做:

[RoutePrefix("api/apps")] 
public class ApplicationsController : ApiController{ 

     [Route("get/{id}"))] 
     public async Task<IHttpActionResult>GetApplications(int id) 
+0

是的,我也有routeprefix ..但它又說它不是一個屬性類.. – ayasha

+0

如果您使用的webapi路由,你應該添加在你的webapiconfig文件中,在註冊方法下調用 'config.MapHttpAttributeRoutes );」 –

+0

你的意思是哪個電話? – ayasha

0

我剛剛創建了一個快速測試項目使用Mvc 5.2.2。在你的控制器,你只需要

using System.Web.Mvc; 

對於RouteAttribute並在RouteConfig只有

using System.Web.Mvc; 
using System.Web.Routing; 

using System.Web.Http;using AttributeRouting.Web.Http;的概率只是混亂的局面(不知道是什麼庫AttributeRouting.Web.Http是從或者這是一個錯字?)。您的WebApi配置應該在不同的類中完成。另外請確保你有System.Web.Mvc.dll引用,以防萬一

+0

是的,也許問題是,我有一個名稱空間WebForms,我不知道是否我應該在命名空間或外部添加使用System ..如果我添加使用System.Web.Mvc;裏面的命名空間一切都搞砸了...... – ayasha

+0

搞砸了怎麼樣?您可以在名稱空間內部或外部添加'使用'。但是WebForms的命名空間與上面的代碼有什麼關係?你是否應該發佈更多的代碼?這個問題涉及您需要使用System.Web.Mvc並在名稱空間聲明內部或外部使用System.Web.Routing的RouteConfig類 –