我有一个LoggingHandler类,我用它作为消息处理程序来记录(使用log4net)请求和响应我的WebApi
public class LoggingMessageHandler : DelegatingHandler
{
public ILogManager LogManager { get; set; }
protected override async Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, System.Threading.CancellationToken cancellationToken)
{
var controllerType = GlobalConfiguration.Configuration.Services
.GetHttpControllerSelector()
.SelectController(request)
.ControllerType;
var requestInfo = string.Format("{0} {1}", request.Method, request.RequestUri);
var correlationId = request.GetCorrelationId().ToString();
var requestMessage = await request.Content.ReadAsStringAsync();
await LogIncommingMessageAsync(controllerType, correlationId, requestInfo, requestMessage.Replace("\r\n", ""));
var response = await base.SendAsync(request, cancellationToken);
string responseMessage;
if (response.IsSuccessStatusCode)
responseMessage = await response.Content.ReadAsStringAsync();
else
responseMessage = response.ReasonPhrase;
await OutgoingMessageAsync(controllerType, correlationId, requestInfo, responseMessage);
return response;
}
protected async …Run Code Online (Sandbox Code Playgroud)