How to manually configure WebHookReceiver for .Net Core?

I am trying to configure WebHookHandler to receive Json Data for a .Net Core project. I know how Webhook works theoretically.

There is a lot of information for getting WebHooks, but sample source code . But do I need an example for .Net Core ?

+5
source share
3 answers

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

+1
source

We want to support WebHooks for the ASP.NET core, but it still works. At the same time, you can look at the handler code and do something similar for the ASP.NET kernel.

Hope this helps!

Henric

+3
source

Here is a very simple example that I worked with Azure Alerts:

 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>(); } } 

The key uses [FromBody] in the parameter and has the correct JSON deserialization in your model.

+1
source

Source: https://habr.com/ru/post/1261374/


All Articles