C# 如何使用唯一/我自己的名称注册webhook

C# 如何使用唯一/我自己的名称注册webhook,c#,asp.net,webhooks,C#,Asp.net,Webhooks,小结:我想要一个带有webhook特定名称的wehook url,而不是…/custom/或…/genericjson/如果使用这些nuget包 i、 e。 我找到的所有指南和类似的东西要么是现有的Webhook nuget包Github、bitbucket、slack等,要么是通用的和定制的,除了名称之外,我并不真正理解它们之间的区别,但那是另一回事。 我已经启动并运行了genericjson,它正在做它应该做的事情,但我更希望有一个更正确的url和/或Webhook名称 那么,我怎样才能得

小结:我想要一个带有webhook特定名称的wehook url,而不是…/custom/或…/genericjson/如果使用这些nuget包

i、 e。

我找到的所有指南和类似的东西要么是现有的Webhook nuget包Github、bitbucket、slack等,要么是通用的和定制的,除了名称之外,我并不真正理解它们之间的区别,但那是另一回事。 我已经启动并运行了genericjson,它正在做它应该做的事情,但我更希望有一个更正确的url和/或Webhook名称

那么,我怎样才能得到我认为是我需要的东西,让它按照我想要的方式工作呢

config.InitializeReceiveGenericJsonWebHooks();
而是像工作一样工作

config.InitializeReceiveMyWebhookWebHooks();
因此,如果我在appSettings中添加密钥,那么我的服务器将在上面的URL上侦听Webhook,等等

我试着查看InitializeReceiveGenericJsonWebHooks和InitializeReceiveGitHubWebHooks的定义,但是那里几乎没有任何代码,我也不知道如何/什么/在哪里创建我自己的版本。 我对Asp.net还很陌生,以前在Apache上主要是用html/css/php/javascript编写站点代码,而不是在IIS上用Asp.net/C编写站点代码,所以我发现应该有一些简单的方法来解决这个问题,但经过一整天的搜索和尝试,我已经不知道下一步该怎么做了

编辑: 目前,这就是我与Webhook相关的代码的样子。没什么特别的,只是为了让webhook正常工作

Web.config

WebApiConfig.cs

公共静态类WebApiConfig { 公共静态无效注册表HttpConfiguration配置 { //Web API路由 config.maphttpAttribute路由; config.Routes.MapHttpRoute 名称:DefaultApi, routeTemplate:api/{controller}/{id}, 默认值:新建{id=RouteParameter.Optional} ; //问题的相关部分 config.InitializeReceiveGenericJsonWebHooks; } } GenericJsonWebHookHandler.cs

命名空间Project.API.Webhooks { 公共类GenericJsonWebHookHandler:WebHookHandler { 公共GenericJsonWebHookHandler { this.Receiver=genericjson; } 公共覆盖任务ExecuteAsyncstring接收器,WebHookHandlerContext上下文 { //从WebHook获取JSON JObject data=context.GetDataOrDefault; //用webhook做点什么 返回Task.FromResulttrue; } } }
我终于设法解决了它

通过查看和进一步了解我正在使用的,我终于发现缺少了什么

只需要创建一个名为HttpConfigurationExtensions.cs的文件,并将源代码复制并粘贴到新创建的文件中,然后进行更改

public static void InitializeReceiveGenericJsonWebHooks(this HttpConfiguration config)
我想让它听什么

public static void InitializeReceiveMyWebhookWebHooks(this HttpConfiguration config)
像这样

然后,我还需要创建一个名为MyWebhookReceiver.cs的文件,从中复制并粘贴代码,并稍微更改内容

    public class GenericJsonWebHookReceiver : WebHookReceiver
    {
        internal const string RecName = "genericjson";
进入

它仍然像我想要的GenericJSON webhook,但现在我可以使用/api/incoming/MyWebhook/whateverIWant?code=123456790作为webhook URL,而不是像/GenericJSON/MyWebhook?code=1234567890那样


您仍然需要处理程序文件,但是以相同的方式,这两个文件在这里稍微更改了,您可以对处理程序执行相同的操作。创建MyWebHookHandler.cs,只需复制并粘贴代码,将GenericJson更改为MyWebHook,就可以了。

我终于解决了这个问题

通过查看和进一步了解我正在使用的,我终于发现缺少了什么

只需要创建一个名为HttpConfigurationExtensions.cs的文件,并将源代码复制并粘贴到新创建的文件中,然后进行更改

public static void InitializeReceiveGenericJsonWebHooks(this HttpConfiguration config)
我想让它听什么

public static void InitializeReceiveMyWebhookWebHooks(this HttpConfiguration config)
像这样

然后,我还需要创建一个名为MyWebhookReceiver.cs的文件,从中复制并粘贴代码,并稍微更改内容

    public class GenericJsonWebHookReceiver : WebHookReceiver
    {
        internal const string RecName = "genericjson";
进入

它仍然像我想要的GenericJSON webhook,但现在我可以使用/api/incoming/MyWebhook/whateverIWant?code=123456790作为webhook URL,而不是像/GenericJSON/MyWebhook?code=1234567890那样


您仍然需要处理程序文件,但是以相同的方式,这两个文件在这里稍微更改了,您可以对处理程序执行相同的操作。创建MyWebHookHandler.cs,只需复制并粘贴代码,将GenericJson更改为MyWebHook,就可以了。

干得好!如果其他人也在关注这一点,那么只缺少Web.config条目

<add key="MS_WebHookReceiverSecret_GenericJson" value="i=xxx,z=xxx" /> 
不是:

此外,执行HttpConfigurationExtensions.cs步骤没有任何好处


但是,您确实需要转到GenericJsonWebHookReceiver.cs步骤,流程才能正常运行。

干得好!如果其他人也在关注这一点,那么只缺少Web.config条目

<add key="MS_WebHookReceiverSecret_GenericJson" value="i=xxx,z=xxx" /> 
不是:

此外,使用HttpConfigurationExtensions没有任何好处。 cs步骤

但是,您确实需要转到GenericJsonWebHookReceiver.cs步骤才能使流程正常工作