5

Je suis en train d'installer le WebHookHandler pour recevoir des données Json pour le projet .Net Core. Je sais comment le Webhook fonctionne théoriquement.Comment configurer WebHookReceiver manuellement pour .Net Core?

Il existe une bonne quantité d'informations disponibles pour la réception de WebHooks, mais le sample source code. Mais j'ai besoin d'un exemple pour .Net Core?

+0

Le noyau .Net est un futur plan: https://github.com/aspnet/WebHooks/issues/5 –

+0

Bien sûr, j'ai posé la même question dans ce fil GitHub. De toute façon, je connais la réponse maintenant. Merci! –

+0

. Le support de base de .Net est disponible sur GitHub: https://github.com/aspnet/WebHooks/blob/dev/README.md –

Répondre

3

Nous ne voulons soutenir WebHooks pour ASP.NET de base, mais il est encore dans les œuvres. En attendant, vous pourrez peut-être regarder le code du gestionnaire et faire quelque chose de similaire pour ASP.NET Core.

Espérons que cela aide!

Henrik

1

Voici un exemple très basique que je suis arrivé travail avec 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>(); 
    } 
} 

La clé utilise [FromBody] sur le paramètre et ayant exactement le désérialisation droit JSON dans votre modèle.