2014-11-24 98 views
0

我有這樣的控制器:WepApi路線和RoutePrefix混亂

[Authorize(Roles = Roles.Administrator), 
RoutePrefix("Api/Portal/User")] 
public class UserController : ServiceApiController 
{ 
    /// <summary> 
    /// Gets all User associated with the Account 
    /// </summary> 
    /// <param name="accountId"> 
    /// The account id. 
    /// </param> 
    /// <returns> 
    /// The <see cref="JsonResponse"/>. 
    /// </returns> 
    [Route("{accountId:guid}")] 
    public JsonResponse<UserDto> Get(Guid accountId) 
    { 
     return new JsonResponse<UserDto>("Success", true); 
    } 
} 

低於網址打這條路是否正確?

/Api/Portal/User?accountId=5cbcec52-f417-48a2-a241-470e48518858

我使用招來執行GET請求。

我在這裏有點困惑。我的路由設置是這樣的:

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

    // Web API routes 
    config.MapHttpAttributeRoutes(); 

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

還有一個問題,我的路由前綴是Api/Portal/UserUser將會繼續作爲實際控制人不變,這樣我就可以Api/Portal/[controller]Api/Portal/{controller}

回答

1

替換爲您配置方面,正確的URL會

/Api/Portal/User/5cbcec52-f417-48a2-a241-470e48518858 

如果你想使用其他網址,你必須改變你的控制器方法如下:

[Route("{accountId:guid}")] 
public JsonResponse<UserDto> Get([FromUri]Guid accountId) 
{ 
    return new JsonResponse<UserDto>("Success", true); 
} 

參數屬性[FromUri]定義值的來源。