在Asp.Net WebHooks中,可以通过WebHookHandler来处理来自WebHooks的请求,而不必依赖于MVC或WebAPI控制器。以下是一个简单的示例,演示如何使用WebHookHandler将通知发送到外部WebHooks。
首先,需要为WebHookHandler创建自定义类。此类必须派生自WebHookHandler,并重写它的ProcessWebHookAsync方法。在该方法中,可以执行自定义操作,并使用SendWebHookAsync方法将通知传递给外部WebHooks。
public class MyWebHookHandler : WebHookHandler
{
public MyWebHookHandler()
{
this.Receiver = "my-receiver";
}
public override async Task ExecuteAsync(string generator, WebHookHandlerContext context)
{
// Your custom logic here
// ...
// Send the notification to the external WebHooks
Uri targetUri = new Uri("https://example.com/webhook");
await context.SendWebHookAsync(targetUri, new { message = "Hello, World!" });
}
}
接下来,在Startup.cs中注册自定义WebHookHandler。可以使用AddWebHooks方法将其添加到服务集合中。然后,在Configure方法中,可以将其添加到WebHooks路由中。
public void ConfigureServices(IServiceCollection services)
{
services.AddWebHooks();
services.AddTransient();
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
// ...
// Add the custom WebHookHandler to the WebHooks route
app.UseWebHooks(routes =>
{
routes.Add(handlerOptions =>
{
handlerOptions.WebHookBodyType = WebHookBodyType.Json;
});
});
// ...
}
在此示例中,我们使用了一个简单的外部WebHook地址(https://example.com/webhook)。如果要使用实际WebHook地址,请替换它。
现在,你已经成功地为Asp.Net WebHooks和通知外部WebHooks创建了自定义的解