Route-Handler in ASP.Net WebAPI

Ich bin in der Lage, erfolgreich registrieren Sie einen benutzerdefinierten route-handler (abgeleitet von IRouteHandler) innerhalb von global.asax.cs eine Web-API-route ala:

        routes.MapHttpRoute(
            name: "DefaultApi",
            routeTemplate: "{client}/api/1.0/{controller}/{action}/{id}",
            defaults: new{id = UrlParameter.Optional}
        ).RouteHandler = new SingleActionAPIRouteHandler();

Aber ich kann nicht scheinen zu finden ein Weg, dies zu tun, wenn Sie versuchen, um das setup einer in-memory-host für die API zur integration testen, wenn ich rufe HttpConfiguration.Routen.MapRoute ich bin nicht in der Lage, einen handler über das zurückgegebene IHttpRoute.

Sollte, mache ich das anders (zum Beispiel durch die Verwendung einer benutzerdefinierten HttpControllerSelector)? Ich würde natürlich gerne tun es die gleiche Weise in beiden Fällen.

Dank,
Matt

EDIT:

So, was ich am Ende tun war im Grunde die folgenden Ratschläge, die von unten, aber einfach überschreiben des HttpControllerDispatcher-Klasse wie folgt:

public class CustomHttpControllerDispatcher : HttpControllerDispatcher
{
    public CustomHttpControllerDispatcher(HttpConfiguration configuration) : base(configuration)
    {
    }
    protected override Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
    {
        //My stuff here

        return base.SendAsync(request, cancellationToken);
    }
}

InformationsquelleAutor mattcole | 2012-09-11

Schreibe einen Kommentar