如何为.Net Core手动设置WebHookReceiver?

问题描述:

我试图设置WebHookHandler来接收.Net Core项目的Json数据。我知道Webhook理论上是如何工作的。如何为.Net Core手动设置WebHookReceiver?

有大量的信息可用于接收WebHooks,但sample source code。但我需要一个.Net Core的例子吗?

+0

.Net核心是未来计划:https://github.com/aspnet/WebHooks/issues/5 –

+0

当然,我在GitHub主题中提出了同样的问题。无论如何,我现在知道答案。谢谢! –

+0

。GitHub提供了核心支持:https://github.com/aspnet/WebHooks/blob/dev/README.md –

+0

想知道,是否有可能实现自己? –

+0

我不这么认为.. –

我们要支持ASP.NET核心网络挂接支持网络挂接,但它仍然是在作品中。与此同时,您可能可以查看处理程序代码并为ASP.NET Core执行类似的操作。

希望这会有所帮助!

亨里克

这里,我得到了与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反序列化。