これに答えるには少し遅いかもしれませんが、私は同じ状況に陥っていることに気付きました (つまり、対応する IHttpRoute 名がなくても URL を生成する必要があります)。ただし、Route と HttpRequestMessage だけで URL を生成できます。
var parameters = new Dictionary{{"id" , 123}, {HttpRoute.HttpRouteKey, true}};
var path = Route.GetVirtualPath(request, parameters);
var uri = path.VirtualPath;
重要な部分は、HttpRoute.HttpRouteKey をパラメーターに追加することです。この値が使用されていない場合、GetVirtualPath は null を返します。HttpRoute.csのコードを参照してください
// Only perform URL generation if the "httproute" key was specified. This allows these
// routes to be ignored when a regular MVC app tries to generate URLs. Without this special
// key an HTTP route used for Web API would normally take over almost all the routes in a
// typical app.
if (values != null && !values.Keys.Contains(HttpRouteKey, StringComparer.OrdinalIgnoreCase))
{
return null;
}