Ho un gestore di messaggi API Web MyHandler
che voglio eseguire nella pipeline OWIN come middleware. Quindi configurando il gestore come questo.Conversione di HttpRequestMessage a OwinRequest e OwinResponse a HttpResponseMessage
public class Startup
{
public void Configuration(IAppBuilder app)
{
app.UseHttpMessageHandler(new MyHandler());
HttpConfiguration config = new HttpConfiguration();
config.Routes.MapHttpRoute(
"DefaultWebApi",
"{controller}/{id}",
new { id = RouteParameter.Optional });
app.UseWebApi(config);
}
}
Il gestore è molto semplice e non fa nulla.
public class MyHandler : DelegatingHandler
{
protected override async Task<HttpResponseMessage> SendAsync(
HttpRequestMessage request, CancellationToken cancellationToken)
{ // <--- breakpoint here
var response = await base.SendAsync(request, cancellationToken);
return response;
}
}
ho messo un punto di rottura all'interno SendAsync
e si rompe, ma il seguente base.SendAsync
bombe in silenzio e vedo A first chance exception of type 'System.InvalidOperationException' occurred in System.Net.Http.dll
.
Posso facilmente aggiungere MyHandler
a config.MessageHandlers
e funzionerà perfettamente nella pipeline dell'API Web, ma non è quello che voglio fare. Voglio eseguire MyHandler
nella pipeline OWIN. Ciò è effettivamente possibile? Dovrebbe essere. Altrimenti, non ha senso avere il metodo di estensione UseHttpMessageHandler
, immagino. Solo che non riuscivo a capire un modo per fare quello che voglio fare.
Penso che tu stia confondendo i concetti dei gestori di messaggi e delegando i gestori. Un gestore di messaggi è solo qualcosa che richiede una richiesta e restituisce una risposta. –
Comprendo la differenza tra il gestore di messaggi e un gestore delegante. Un gestore delegante è un gestore di messaggi e speravo solo che sarei stato in grado di utilizzare un gestore delegante al posto del gestore di messaggi e magicamente verrà eseguito nella pipeline OWIN come viene eseguito in una pipeline dell'API Web e apparentemente non è possibile , basato sulla risposta di Kiran. Sono d'accordo che sono troppo ambizioso. Grazie per aver guardato la mia domanda. – Badri