c# asp.net-web-api asp.net-web-api-routing attributerouting

c# - Reemplazo de Url.Link cuando se utiliza el enrutamiento de atributos



asp.net-web-api asp.net-web-api-routing (1)

He actualizado mi proyecto de webapi a webapi2 y ahora estoy usando el enrutamiento de atributos. Tuve un método en el que usé Url helper para obtener la url. ¿Cuál es la mejor manera de reemplazar la ayuda de Url (porque esto no funciona para los atributos)?

Mi código de ejemplo de uso antiguo:

protected Uri GetLocationUri(object route, string routeName = WebApiConfig.RouteDefaultApi) { string uri = Url.Link(routeName, route); return new Uri(uri); }

Configuración de rutas:

public static void Register(HttpConfiguration config) { config.MapHttpAttributeRoutes(); config.Routes.MapHttpRoute( name: RouteDefaultApi, routeTemplate: "{controller}/{id}/{action}", defaults: new { id = RouteParameter.Optional, action = "Default" } ); }

Uso:

Uri myUrl = GetLocationUri(route: new { action = "images", id = eventId });


¿Por qué intenta utilizar la ruta convencional RouteDefaultApi cuando desea generar enlaces a una ruta atribuida de un controlador / acción?

A continuación se muestra un ejemplo de uso de cómo debe usar Url.Link con enrutamiento de atributos:

[Route("api/values/{id}", Name = "GetValueById")] public string GetSingle(int id) Url.Link("GetValueById", new { id = 10 } );