我尝试为WebHookHandler
项目设置.Net Core
以接收Json数据。我知道Webhook
如何在理论上起作用。
有大量可用于接收WebHooks但sample source code的信息。但我需要一个.Net Core
的例子吗?
答案 0 :(得分:3)
我们确实希望支持ASP.NET Core的WebHooks,但它仍在开发中。与此同时,您可以查看处理程序代码并为ASP.NET Core执行类似的操作。
希望这有帮助!
的Henrik
答案 1 :(得分:1)
.NET Core目前不支持WebHooks https://github.com/aspnet/WebHooks/issues/5
答案 2 :(得分: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反序列化。