başarıyla bir Web API rota ala için global.asax.cs içindeki (IRouteHandler kaynaklanan) özel bir rota işleyicisi kaydetmek mümkün değilim: AncakÖzel rota işleyicileri
routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "{client}/api/1.0/{controller}/{action}/{id}",
defaults: new{id = UrlParameter.Optional}
).RouteHandler = new SingleActionAPIRouteHandler();
ben yapabilirsiniz HttpConfiguration.Routes.MapRoute çağrısı döndüğümde, IHttpRoute döndürülen bir işleyiciyi ayarlayamadığımda, tümleştirme sınaması için API için bir bellek ana bilgisayarını kurmaya çalışırken bunu yapmak için bir yol bulamıyor.
Bunu farklı şekilde yapmalı mıyım (örneğin özel bir HttpControllerSelector kullanarak)? Her iki durumda da aynı şekilde yapmak isterim.
sayesinde Matt
DÜZENLEME:
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);
}
}
sayesinde, bu yaklaşım için özel IHttpControllerSelector tedarik daha iyidir neden açıklayabilir yapılandırma?Varsayılan HttpControllerDispatcher, yapmak istediğim işin bakımı için konfigürasyonda tanımlanan ControllerSelector'ı kullanıyor gibi görünüyor. – mattcole
@mattcole Biraz daha net olmalıydım - Doğru olduğunuzu onaylamak istedim ve şüphelendiğim gibi (zaten yaptığınız gibi) özel bir HttpControllerSelector'a sahip olmanız gerektiğini http://netmvc.blogspot.co.uk/yaptığınız her şeyin bir denetleyiciye yönlendirilmesidir. Ben sadece siz belki de kontrolörlerin seçiminden daha fazlasını yapıyorsunuzdur ve belki de kontrolörden başka başka işleyicileri kullanmak istemişsinizdir ... CustomHttpControllerDispatcher fikri biraz daha açık bir oyun ve deneyimdi ... daha açık olmamak için üzgünüm. –
Sorun yok Mark, sonunda, sadece SendAsync yöntemini aştığım routevallerde sadece bazı değerleri değiştirdiğim için, önerdiğim şeyin bir versiyonuna gittim, işimi yaptım ve sonra boru hattının yoluna devam etmesine izin verdim. – mattcole