【发布时间】:2016-01-28 19:13:47
【问题描述】:
我正在尝试学习 webhook,我的要求需要有一个可以发布一些数据的发布者,并且它的所有订阅者都会收到 webhook 通知。 在这里我的要求我需要在本地主机中同时拥有发布者和接收者。
我正在尝试使用以下帖子。 http://blogs.msdn.com/b/webdev/archive/2015/09/15/sending-webhooks-with-asp-net-webhooks-preview.aspx
当我调用 subscribe 方法时它失败了。请指教,我是否做错了什么。
function subscribe() {
$.ajax({
type: "POST",
url: "/api/webhooks/registrations",
data: JSON.stringify({
WebHookUri: "http://localhost:59927/api/webhooks/incoming/custom",
Secret: "12345678901234567890123456789012",
Description: "My first WebHook!"
}),
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(data, status) { alert(status); },
failure: function(errMsg) { alert(errMsg); }
});
return false;
}
这是我调用订阅方法时的错误消息。
"Message":"WebHook 验证失败。请确保 WebHook URI 有效且端点 是可访问的。遇到错误:NotFound","ExceptionMessage":"WebHook 验证失败。请 确保 WebHook URI 有效并且端点可访问。遇到的错误:未找到” ,"ExceptionType":"System.InvalidOperationException"
这是我的 WebApiConfig.cs 文件
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
// Web API configuration and services
// Web API routes
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
// Load Web API controllers
config.InitializeCustomWebHooks();
config.InitializeCustomWebHooksApis();
config.InitializeReceiveCustomWebHooks();
}
}
和 Global.asax 文件
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
GlobalConfiguration.Configure(WebApiConfig.Register);
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
}
【问题讨论】: