我有这个控制器:
[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
我正在使用Fiddler执行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/User
,而User
将作为实际控制器保持不变,因此可以替换为Api/Portal/[controller]
或Api/Portal/{controller}
答案 0 :(得分:1)
使用您的配置,正确的URL将是
/Api/Portal/User/5cbcec52-f417-48a2-a241-470e48518858
如果您想使用其他Url,则必须更改控制器方法,如下所示:
[Route("{accountId:guid}")]
public JsonResponse<UserDto> Get([FromUri]Guid accountId)
{
return new JsonResponse<UserDto>("Success", true);
}
参数属性[FromUri]
定义了值的来源。