Я пытаюсь использовать GitLab webhook 'Push events', чтобы уведомлять пользователей о внесении изменений в файл.GitLab WebHook post-receive с WebAPI
Согласно этому GitLab help я должен получить это как тело запроса:
{
"object_kind": "push",
"before": "95790bf891e76fee5e1747ab589903a6a1f80f22",
"after": "da1560886d4f094c3e6c9ef40349f7d38b5d27d7",
"ref": "refs/heads/master",
"user_id": 4,
"user_name": "John Smith",
"user_email": "[email protected]",
"project_id": 15,
"repository": {
"name": "Diaspora",
"url": "gi[email protected]:mike/diasporadiaspora.git",
"description": "",
"homepage": "http://example.com/mike/diaspora",
"git_http_url":"http://example.com/mike/diaspora.git",
"git_ssh_url":"[email protected]:mike/diaspora.git",
"visibility_level":0
},
"commits": [
{
"id": "b6568db1bc1dcd7f8b4d5a946b0b91f9dacd7327",
"message": "Update Catalan translation to e38cb41.",
"timestamp": "2011-12-12T14:27:31+02:00",
"url": "http://example.com/mike/diaspora/commit/b6568db1bc1dcd7f8b4d5a946b0b91f9dacd7327",
"author": {
"name": "Jordi Mallach",
"email": "[email protected]"
}
},
{
"id": "da1560886d4f094c3e6c9ef40349f7d38b5d27d7",
"message": "fixed readme",
"timestamp": "2012-01-03T23:36:29+02:00",
"url": "http://example.com/mike/diaspora/commit/da1560886d4f094c3e6c9ef40349f7d38b5d27d7",
"author": {
"name": "GitLab dev user",
"email": "[email protected](none)"
}
}
],
"total_commits_count": 4
}
но мой метод WebAPI не решает этот запрос правильно, то, я пытался это
public async Task Post()
public void Post([FromBody] dynamic value)
public void Post([FromBody] PushEvent value)
(строго типизированный)
Ни один из вышеперечисленных подходов, похоже, не работает, однако попытка этого в рубине, как показано в example method, не работает.
Так что я полагаю, что это то, что связано с тем, как я использую веб-API. Есть предположения?
My PushEvent Class выглядит следующим образом:
public class PushEvent
{
public string name { get; set; }
public string url { get; set; }
public string description { get; set; }
public string homepage { get; set; }
public string git_http_url { get; set; }
public string git_ssh_url { get; set; }
public int visibility_level { get; set; }
public string object_kind { get; set; }
public string before { get; set; }
public string after { get; set; }
public int user_id { get; set; }
public string user_name { get; set; }
public string user_email { get; set; }
public int project_id { get; set; }
public IList<Commit> commits { get; set; }
public int total_commits_count { get; set; }
public class Author
{
public string name { get; set; }
public string email { get; set; }
}
public class Commit
{
public string id { get; set; }
public string message { get; set; }
public DateTime timestamp { get; set; }
public string url { get; set; }
public Author author { get; set; }
}
}
Было бы полезно чтобы увидеть, как выглядел ваш объект PushEvent. – peinearydevelopment
Кроме того, когда вы говорите, не разрешая права, что это значит? Вы получаете 404? Ваша точка останова не попадает? Ваша точка останова попадает, но объект не имеет никаких значений и т. Д.? – peinearydevelopment
поэтому в моей ситуации я не могу отладить это, потому что я не могу дать Gitlab webhook URL-адрес localhost, поэтому я публикую свой webapi и даю URL-адрес, например http: abc.com/api/hook. но у меня есть несколько фиктивных сообщений журнала, и с этим я могу подтвердить, что метод не ударяется вообще. –