메시지 핸들러에서는 일련의 메시지 핸들러가 함께 연결됩니다. 첫 번째 핸들러는 HTTP 요청을 수신하고 일부 처리를 수행한 후 요청을 다음 핸들러로 전달합니다. 어느 시점에서 응답이 생성되어 체인으로 반환됩니다. 이 패턴을 Delegated Handler라고 합니다.
내장된 서버 측 메시지 핸들러 외에도 자체 서버 측 HTTP 메시지 핸들러를 만들 수도 있습니다. 사용자 정의 서버측 HTTP 생성 ASP.NET Web API의 메시지 처리기 에는 DelegatingHandler를 사용합니다. System.Net.Http.DelegatingHandler에서 파생된 클래스를 만들어야 합니다. 그런 다음 이 사용자 정의 클래스는 SendAsync 메서드를 재정의해야 합니다.
Task
이 메서드는 HttpRequestMessage를 입력으로 사용하고 비동기적으로 반환합니다. HttpResponse메시지. 일반적인 구현은 다음을 수행합니다.
public class CustomMessageHandler : DelegatingHandler{ protected async override Task<HttpResponseMessage> SendAsync( HttpRequestMessage request, CancellationToken cancellationToken){ Debug.WriteLine("CustomMessageHandler processing the request"); // Calling the inner handler var response = await base.SendAsync(request, cancellationToken); Debug.WriteLine("CustomMessageHandler processing the response"); return response; } }
위임 핸들러는 내부 핸들러를 건너뛰고 직접 응답을 생성할 수도 있습니다.
public class CustomMessageHandler: DelegatingHandler{ protected override Task<HttpResponseMessage> SendAsync( HttpRequestMessage request, CancellationToken cancellationToken){ // Create the response var response = new HttpResponseMessage(HttpStatusCode.OK){ Content = new StringContent("Skipping the inner handler") }; // TaskCompletionSource creates a task that does not contain a delegate var taskCompletion = new TaskCompletionSource<HttpResponseMessage>(); taskCompletion.SetResult(response); return taskCompletion.Task; } }
위 내용은 Asp.Net webAPI C#에서 DelegatingHandler의 사용법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!