I'd like to have every request logged automatically. In previous .Net Framwork WebAPI project, I used to register a delegateHandler to do so.
WebApiConfig.cs
public static void Register(HttpConfiguration config) { config.MessageHandlers.Add(new AutoLogDelegateHandler()); } AutoLogDelegateHandler.cs
public class AutoLogDelegateHandler : DelegatingHandler { protected override async Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) { var requestBody = request.Content.ReadAsStringAsync().Result; return await base.SendAsync(request, cancellationToken) .ContinueWith(task => { HttpResponseMessage response = task.Result; //Log use log4net _LogHandle(request, requestBody, response); return response; }); } } an example of the log content:
------------------------------------------------------ 2017-08-02 19:34:58,840 uri: /emp/register body: { "timeStamp": 1481013427, "id": "0322654451", "type": "t3", "remark": "system auto reg" } response: {"msg":"c556f652fc52f94af081a130dc627433","success":"true"} ------------------------------------------------------ But in .NET Core WebAPI project, there is no WebApiConfig , or the register function at Global.asax GlobalConfiguration.Configure(WebApiConfig.Register);
So is there any way to achieve that in .NET Core WebAPI?
