Замена для Url.Link при использовании маршрутизации атрибутов

Я обновил свой проект от webapi до webapi2 и теперь использую маршрутизацию атрибутов. У меня был метод, где я использовал помощник Url для получения URL-адреса. Это лучший способ заменить помощник Url (потому что это не работает для атрибутов).

Мой пример кода старого использования:

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

Конфигурация маршрутов:

public static void Register(HttpConfiguration config)
{
    config.MapHttpAttributeRoutes();

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

Использование:

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

Ответы

Ответ 1

Почему вы пытаетесь использовать обычный маршрут RouteDefaultApi, если хотите создать ссылки на атрибут маршрута контроллера/действия?

Ниже приведен пример использования того, как вам нужно использовать Url.Link с маршрутизацией атрибута:

[Route("api/values/{id}", Name = "GetValueById")]
public string GetSingle(int id)

Url.Link("GetValueById", new { id = 10 } );