Ja, tut es. HttpClient
erzeugt eine HTTP-Anfrage über DelegatingHandler
Kette. Um die Anforderung HttpClient
abzufangen, können Sie einen abgeleiteten Handler mit der überlagerten Methode SendAsync
zu dieser Kette hinzufügen.
Verbrauch:
var handler = new ExampleHttpHandler(fooService);
var client = new HttpClient(new ExampleHttpHandler(handler));
var response = await client.GetAsync("http://google.com");
Umsetzung:
public class ExampleHttpHandler : DelegatingHandler
{
//register the handler itself in DI to inject dependencies
public ExampleHttpHandler(FooService service) : this(service, null)
{
}
public ExampleHttpHandler(FooService service, HttpMessageHandler innerHandler)
{
//default handler should be the last!
InnerHandler = innerHandler ?? new HttpClientHandler();
}
protected override async Task<HttpResponseMessage> SendAsync(
HttpRequestMessage request,
CancellationToken cancellationToken)
{
//add any logic here
return await base.SendAsync(request, cancellationToken);
}
}
Beziehen Sie sich auf Middle? https://docs.microsoft.com/en-us/aspnet/core/fundamentals/middleware – Adrian
Nein. Wenn ich eine ASP.NET Core-App habe, die eine Bibliothek enthält, die einen anderen Server über HTTP aufruft, wie kann ich wissen, wie Es dauerte lange, bis diese Bibliothek den anderen Server anrief. Andere Technologien (Angular) haben das Konzept von Interzeptoren, bei denen Sie einen Rückruf erhalten können, wenn eine ausgehende HTTP-Anfrage gestellt wird. Hat .NET Core das? Danke – ChrisBellew