5

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

除了示例源代码之外,还有大量可用于接收 WebHook 的信息。但我需要一个例子.Net Core吗?

4

3 回答 3

3

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

希望这可以帮助!

亨里克

于 2016-12-28T18:48:03.573 回答
1

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

于 2016-12-16T15:15:01.330 回答
1

这是我使用 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<ActionResult> 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<String, String> Properties { get; set; } = new Dictionary<String, String>();
    }
}

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

于 2017-08-18T15:50:13.570 回答