Home > Software design >  Cannot set a URI for asp.net generic webhooks with a route different than xyz.com/api/webhooks/incom
Cannot set a URI for asp.net generic webhooks with a route different than xyz.com/api/webhooks/incom

Time:10-27

I cannot seem to find a way to set a URI like this for generic asp.net webhooks with a route that begins with something like /portalapi/v1/*. E.g. something like this:

    config.Routes.MapHttpRoute(
        name: "PortalApi",
        routeTemplate: "portalapi/v1/{controller}/{id}",
        defaults: new { id = RouteParameter.Optional }
    );

The webhook receiver only seems to respond to posts from URIs in the form api/*:

   config.Routes.MapHttpRoute(
        name: "DefaultApi",
        routeTemplate: "api/{controller}/{id}",
        defaults: new { id = RouteParameter.Optional }
    );

Am I missing something? Or is this a bug? Has anyone been able to change the beginning of the route and have it accepted by the webhook call?

I read through this microsoft documentation, but didn't find any answers: https://docs.microsoft.com/en-us/aspnet/webhooks/receiving/receivers

I have an open ticket with the AspNetWebHooks team on github. https://github.com/aspnet/AspNetWebHooks/issues/62

CodePudding user response:

You can't, because it's not supported, and the project is in maintenance mode so it won't ever be supported.

Look at the source code:

// Use a constant template since all WebHook constraints use the resulting route values and we have no
// requirements for user-specified route templates.
private static string ChooseTemplate()
{
    var template = "/api/webhooks/incoming/"
          $"{{{WebHookConstants.ReceiverKeyName}}}/"
          $"{{{WebHookConstants.IdKeyName}?}}";

    return template;
}
  • Related