概述
使用微軟官方的類庫 (Microsoft.AspNet.WebHooks.Receivers)
- 使用說明:https://docs.microsoft.com/en-us/aspnet/webhooks/receiving/handlers
- NuGet:https://www.nuget.org/packages/Microsoft.AspNet.WebHooks.Receivers.VSTS/
- 示例代碼:https://github.com/aspnet/AspNetWebHooks/tree/main/samples/VstsReceiver
net core版本的也有,但是目前對azure devops本身還沒有支持,現在還沒有 Microsoft.AspNetCore.WebHooks.Receivers.VSTS https://github.com/aspnet/WebHooks
實現
web項目配置
綁定到IIS站點,F5就可以直接附加到iis站點,可使用postman來觸發(body中的內容可以去ads的webhook的請求中複製),也可以直接等待來自ad是觸發(前提是站點地址配置到ads的webhook中)
C# 示例代碼
public partial class VstsWebHookHandler : VstsWebHookHandlerBase
{
public VstsWebHookHandler() : base()
{
}
/// <summary>
/// We use <see cref="VstsWebHookHandlerBase"/> so just have to override the methods we want to process WebHooks for.
/// This one processes the <see cref="BuildCompletedPayload"/> WebHook.
/// </summary>
public override Task ExecuteAsync(WebHookHandlerContext context, BuildCompletedPayload payload)
{
try // 記得一定要try catch,web hook上會有錯誤計數,到了一定的數量就會自動停止webhook
{
if (payload.Resource.Reason.ToLower() == "usercreated")
{
Logger.Info("hello !");
}
}
catch (Exception ex)
{
Logger.Error("Webhooks Occurred Error.Evnet:" + payload.EventType, ex);
}
return Task.FromResult(true);
}
}
Azure Devops 配置
項目設置 ,服務掛鉤,點擊“+”新建服務掛鉤,選擇“Web 掛鉤”,點擊“下一步”按鈕
選擇出發的事件,或者指定的字段
錄入URL地址,例如:
http://ads.jasonchen.com:8080/api/webhooks/incoming/vsts?code=83699ec7c1d794c0c780e49a5c72972590571fd8
確保狀態“已啓動”,如果有錯誤可以通過“歷史記錄”查看最新的錯誤