.NET Core中如何实现ReceiveCustomWebHooks接收功能?
在.NET Core中实现自定义WebHook接收端
首先要明确:原ASP.NET Framework里的InitializeReceiveCustomWebHooks()等扩展方法是针对传统Web API的,.NET Core采用了全新的服务注册与路由映射逻辑,对应实现方案如下:
1. 安装必要的NuGet包
需要安装适配.NET Core的WebHook相关依赖包:
Microsoft.AspNetCore.WebHooks.Receivers.Custom:自定义WebHook接收器核心包Microsoft.AspNetCore.WebHooks.Storage.Azure:若需用Azure存储管理WebHook订阅(对应原InitializeCustomWebHooksAzureStorage())Microsoft.AspNetCore.WebHooks:基础依赖包
可通过CLI命令安装:
dotnet add package Microsoft.AspNetCore.WebHooks.Receivers.Custom dotnet add package Microsoft.AspNetCore.WebHooks.Storage.Azure
2. 配置服务与路由
根据你的.NET Core版本,配置方式分为两种:
.NET 6+ 最小API(Program.cs)
var builder = WebApplication.CreateBuilder(args); // 注册WebHook相关服务,替代原.NET Framework中的Initialize系列方法 builder.Services.AddWebHooks() .AddWebHooksAzureStorage() // 对应原InitializeCustomWebHooksAzureStorage() .AddWebHooksApis() // 对应原InitializeCustomWebHooksApis() .AddCustomWebHooks(); // 对应原InitializeCustomWebHooks() var app = builder.Build(); // 映射自定义WebHook接收端点,替代原InitializeReceiveCustomWebHooks() app.MapCustomWebHooks("/api/webhooks"); // 保留原有API路由配置 app.MapControllers(); app.Run();
.NET Core 3.1及以前(Startup.cs)
public class Startup { public void ConfigureServices(IServiceCollection services) { services.AddControllers(); // 注册WebHook服务 services.AddWebHooks() .AddWebHooksAzureStorage() .AddWebHooksApis() .AddCustomWebHooks(); } public void Configure(IApplicationBuilder app, IWebHostEnvironment env) { if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); } app.UseRouting(); app.UseAuthorization(); app.UseEndpoints(endpoints => { // 映射WebHook接收端点 endpoints.MapCustomWebHooks("/api/webhooks"); endpoints.MapControllers(); }); } }
关键说明
- 原
HttpConfiguration的扩展方法全部替换为IServiceCollection的服务注册方法和端点路由映射逻辑 - 默认WebHook接收端点为
/api/webhooks,可根据业务需求调整路径 - 若无需Azure存储支持,直接移除
.AddWebHooksAzureStorage()即可
内容的提问来源于stack exchange,提问作者Jsanchez
相关产品推荐
相关产品推荐

