热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

如何为.NetCore手动设置WebHookReceiver?-HowtosetupWebHookReceivermanuallyfor.NetCore?

ImtryingtosetuptheWebHookHandlertoReceiveJsonDatafor.NetCoreproject.IknowhowtheWe

I'm trying to setup the WebHookHandler to Receive Json Data for .Net Core project. I know how the Webhook works theoritically.

我正在尝试设置WebHookHandler以接收.Net Core项目的Json数据。我知道Webhook如何在理论上运作。

There is a good amount of information available for Receiving WebHooks but the sample source code. But I need an example for .Net Core?

有大量可用于接收WebHooks的信息,但是示例源代码。但是我需要一个.Net Core的例子吗?

3 个解决方案

#1


1  

.NET Core does not support WebHooks at the moment https://github.com/aspnet/WebHooks/issues/5

.NET Core目前不支持WebHooks https://github.com/aspnet/WebHooks/issues/5

#2


3  

We do want to support WebHooks for ASP.NET Core but it is still in the works. In the mean time, you might be able to look at the handler code and do something similar for ASP.NET Core.

我们确实希望支持WebHooks for ASP.NET Core,但它仍在开发中。与此同时,您可以查看处理程序代码并为ASP.NET Core执行类似的操作。

Hope this helps!

希望这可以帮助!

Henrik

亨里克

#3


1  

Here's a very basic example which I got work with Azure Alerts:

这是我使用Azure警报的一个非常基本的示例:

using Microsoft.AspNetCore.Mvc;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;

namespace ApplicationInsightsMonitor.Controllers
{
    [Produces("application/json")]
    [Route("api/alerts")]
    public class AlertController : Controller
    {
        [HttpPost]
        public async Task Post([FromBody] AIPayloadModel payload)
        {
            if (payload == default(AIPayloadModel))
            {
                return NotFound();
            }

            // Save to database

            return Ok();
        }
    }

    public class AIPayloadModel
    {
        public enum AIPayloadStatus
        {
            Activated,
            Resolved
        }

        public class AIPayloadContextModel
        {
            public enum AIConditionType
            {
                Metric,
                Event
            }

            public enum AIMetricUnit
            {
                Bytes,
                BytesPerSecond,
                Count,
                CountPerSecond,
                Percent,
                Seconds
            }

            public enum AIAggregation
            {
                Average,
                Last,
                Maximum,
                Minimum,
                None,
                Total
            }

            public class AICondition
            {

                [JsonProperty("metricName")]
                public String Name { get; set; }

                [JsonProperty("metricUnit")]
                public AIMetricUnit Units { get; set; }

                [JsonProperty("metricValue")]
                public Decimal Value { get; set; }

                [JsonProperty("threshold")]
                public Decimal Threshold { get; set; }

                [JsonProperty("windowSize")]
                public TimeSpan WindowSize { get; set; }

                [JsonProperty("timeAggregation")]
                public AIAggregation Aggregation { get; set; }

                [JsonProperty("operator")]
                public String Operator { get; set; }
            }

            [JsonProperty("timestamp")]
            public DateTime Time { get; set; }

            [JsonProperty("id")]
            public String Id { get; set; }

            [JsonProperty("name")]
            public String Name { get; set; }

            [JsonProperty("description")]
            public String Description { get; set; }

            [JsonProperty("conditionType")]
            public AIConditionType ConditionType { get; set; }

            [JsonProperty("condition")]
            public AICondition Condition { get; set; }

            [JsonProperty("subscriptionId")]
            public String SubscriptionId { get; set; }

            [JsonProperty("resourceGroupName")]
            public String ResourceGroupName { get; set; }

            [JsonProperty("resourceGroupType")]
            public String ResourceGroupType { get; set; }

            [JsonProperty("resourceName")]
            public String ResourceName { get; set; }

            [JsonProperty("resourceType")]
            public String ResourceType { get; set; }

            [JsonProperty("resourceRegion")]
            public String ResourceRegion { get; set; }

            [JsonProperty("portalLink")]
            public String PortalLink { get; set; }
        }

        [JsonProperty(PropertyName = "status")]
        public AIPayloadStatus Status { get; set; }

        [JsonProperty(PropertyName = "context")]
        public AIPayloadContextModel Context { get; set; }

        [JsonProperty(PropertyName = "properties")]
        public Dictionary Properties { get; set; } = new Dictionary();
    }
}

The key is using [FromBody] on the parameter and having exactly the right JSON deserialization in your model.

关键是在参数上使用[FromBody]并在模型中具有正确的JSON反序列化。


推荐阅读
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • 本文介绍了Oracle数据库中tnsnames.ora文件的作用和配置方法。tnsnames.ora文件在数据库启动过程中会被读取,用于解析LOCAL_LISTENER,并且与侦听无关。文章还提供了配置LOCAL_LISTENER和1522端口的示例,并展示了listener.ora文件的内容。 ... [详细]
  • http:my.oschina.netleejun2005blog136820刚看到群里又有同学在说HTTP协议下的Get请求参数长度是有大小限制的,最大不能超过XX ... [详细]
  • CF:3D City Model(小思维)问题解析和代码实现
    本文通过解析CF:3D City Model问题,介绍了问题的背景和要求,并给出了相应的代码实现。该问题涉及到在一个矩形的网格上建造城市的情景,每个网格单元可以作为建筑的基础,建筑由多个立方体叠加而成。文章详细讲解了问题的解决思路,并给出了相应的代码实现供读者参考。 ... [详细]
  • WebSocket与Socket.io的理解
    WebSocketprotocol是HTML5一种新的协议。它的最大特点就是,服务器可以主动向客户端推送信息,客户端也可以主动向服务器发送信息,是真正的双向平等对话,属于服务器推送 ... [详细]
  • Windows7 64位系统安装PLSQL Developer的步骤和注意事项
    本文介绍了在Windows7 64位系统上安装PLSQL Developer的步骤和注意事项。首先下载并安装PLSQL Developer,注意不要安装在默认目录下。然后下载Windows 32位的oracle instant client,并解压到指定路径。最后,按照自己的喜好对解压后的文件进行命名和压缩。 ... [详细]
  • Skywalking系列博客1安装单机版 Skywalking的快速安装方法
    本文介绍了如何快速安装单机版的Skywalking,包括下载、环境需求和端口检查等步骤。同时提供了百度盘下载地址和查询端口是否被占用的命令。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • Tomcat/Jetty为何选择扩展线程池而不是使用JDK原生线程池?
    本文探讨了Tomcat和Jetty选择扩展线程池而不是使用JDK原生线程池的原因。通过比较IO密集型任务和CPU密集型任务的特点,解释了为何Tomcat和Jetty需要扩展线程池来提高并发度和任务处理速度。同时,介绍了JDK原生线程池的工作流程。 ... [详细]
  • Webmin远程命令执行漏洞复现及防护方法
    本文介绍了Webmin远程命令执行漏洞CVE-2019-15107的漏洞详情和复现方法,同时提供了防护方法。漏洞存在于Webmin的找回密码页面中,攻击者无需权限即可注入命令并执行任意系统命令。文章还提供了相关参考链接和搭建靶场的步骤。此外,还指出了参考链接中的数据包不准确的问题,并解释了漏洞触发的条件。最后,给出了防护方法以避免受到该漏洞的攻击。 ... [详细]
  • 加密世界下一个主流叙事领域:L2、跨链桥、GameFi等
    本文介绍了加密世界下一个主流叙事的七个潜力领域,包括L2、跨链桥、GameFi等。L2作为以太坊的二层解决方案,在过去一年取得了巨大成功,跨链桥和互操作性是多链Web3中最重要的因素。去中心化的数据存储领域也具有巨大潜力,未来云存储市场有望达到1500亿美元。DAO和社交代币将成为购买和控制现实世界资产的重要方式,而GameFi作为数字资产在高收入游戏中的应用有望推动数字资产走向主流。衍生品市场也在不断发展壮大。 ... [详细]
  • C++字符字符串处理及字符集编码方案
    本文介绍了C++中字符字符串处理的问题,并详细解释了字符集编码方案,包括UNICODE、Windows apps采用的UTF-16编码、ASCII、SBCS和DBCS编码方案。同时说明了ANSI C标准和Windows中的字符/字符串数据类型实现。文章还提到了在编译时需要定义UNICODE宏以支持unicode编码,否则将使用windows code page编译。最后,给出了相关的头文件和数据类型定义。 ... [详细]
  • PDO MySQL
    PDOMySQL如果文章有成千上万篇,该怎样保存?数据保存有多种方式,比如单机文件、单机数据库(SQLite)、网络数据库(MySQL、MariaDB)等等。根据项目来选择,做We ... [详细]
  • 在Oracle11g以前版本中的的DataGuard物理备用数据库,可以以只读的方式打开数据库,但此时MediaRecovery利用日志进行数据同步的过 ... [详细]
author-avatar
奇国的雪儿
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有