如何为.Net Core手动设置WebHookReceiver?
问题描述:
我试图设置WebHookHandler
来接收.Net Core
项目的Json数据。我知道Webhook
理论上是如何工作的。如何为.Net Core手动设置WebHookReceiver?
有大量的信息可用于接收WebHooks,但sample source code。但我需要一个.Net Core
的例子吗?
答
我们要支持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反序列化。
.Net核心是未来计划:https://github.com/aspnet/WebHooks/issues/5 –
当然,我在GitHub主题中提出了同样的问题。无论如何,我现在知道答案。谢谢! –
。GitHub提供了核心支持:https://github.com/aspnet/WebHooks/blob/dev/README.md –