我正在尝试为BuildCompleted事件实现WebHook。从Web界面测试服务挂钩时,我遇到错误: Bad Request(400)。似乎没有关于事件日志或IIS日志文件中的错误的详细信息。命中 WebApiConfig 中的 Register 函数,但我的WebHook中的构造函数或 ExecuteAsync 不是。
任何帮助都将受到高度赞赏!我确信我似乎能够看到自己是一件微不足道的事。
我的设置包括本地TFS 2018 Update 2服务器和带有IIS的WebHook的单独Windwos Server 2012。我将Global.asax和web.config部署到wwwroot,将程序集部署到wwwroot / bin。
网址:http://MYSERVER/api/webhooks/incoming/genericjson?code=83699ec7c1d794c0c780e49a5c72972590571fd8
的web.config:
...
<appSettings>
<add key="MS_WebHookReceiverSecret_GenericJson" value="83699ec7c1d794c0c780e49a5c72972590571fd8" />
</appSettings>
...
WebHookHandler:
public class GenericJsonWebHookHandler : WebHookHandler
{
public GenericJsonWebHookHandler()
{
this.Receiver = GenericJsonWebHookReceiver.ReceiverName;
}
public override Task ExecuteAsync(string receiver, WebHookHandlerContext context)
{
return Task.FromResult(true);
}
}
WebApiConfig:
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}
);
// Initialize GenericJson WebHook receiver
config.InitializeReceiveGenericJsonWebHooks();
}
}
的Global.asax.cs
public class Global : HttpApplication
{
protected void Application_Start()
{
GlobalConfiguration.Configure(WebApiConfig.Register);
}
}
答案 0 :(得分:0)
这只是需要https的GenericJsonWebHookReceiver的问题,实际上是由文档指定的。
我被TFS Service Hook添加屏幕抛弃,仅推荐https:
This answer让我更加关注 GetResponse 对服务的调用中的响应。
{&#34;消息&#34;:&#34; WebHook接收器&#39; GenericJsonWebHookReceiver&#39;需要HTTPS以确保安全。请注册类型为&#39; https&#39;。&#34;}
的WebHook URI