asp.netwebhooksasp.net-webhooks

Microsoft ASP.NET WebHooks custom receiver gets multiple attempts


I have implemented a custom receiver for Microsoft ASP.NET WebHooks by implementing WebHookHandler.

public class Web_WebHookHandler : WebHookHandler
    {
        public Web_WebHookHandler()
        {
            this.Receiver = CustomWebHookReceiver.ReceiverName;
        }
        public override Task ExecuteAsync(string generator, WebHookHandlerContext context)
        {                
            SendNotification();               
            return Task.FromResult(true);
        }

        private  void SendNotification()
        {
            Task.Factory.StartNew(() => {
               // doing some processing 
            });
        }
    }

Whenever some event gets fired, it hits my above receiver 3 times. I have tried everything but nothing made any difference. Please help me sort it out.


Solution

  • Try adding bellow code in the ExecuteAsync before return. .i.e.

    context.Response = new System.Net.Http.HttpResponseMessage (System.Net.HttpStatusCode.Gone);
    return Task.FromResult(true);
    

    Actually webhooks dispatcher inspects response from your receiver and retries if proper response is not sent back. So in order to tell dispatcher that request has been processed and everything is okay, you need to set context.Response and also return Task.FromResult(true). Otherwise it will keep trying for 3 times atleast.