Итак, мы заняты проектом ABP и пытаемся указать параметр http для сопоставления с параметром службы приложения.Webhook от Mailgun использует «Message-Id» в качестве параметра http, и мы пытаемся получить доступ к нему из службы приложений.
Вот наш сервис приложений:
public async Task MailDelivered(int timestamp, string token, string signature, string MessageId)
{
var isValid = IsMailGunSignatureValid(timestamp, token, signature);
if (isValid)
{
Console.WriteLine($"Message id: {MessageId}");
var entity = await communicationEventRepository.FirstOrDefaultAsync(entry => entry.MessageId == $"{MessageId}");
if (entity != null)
{
var unixEpoch = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
entity.DeliveredTime = unixEpoch.AddSeconds(timestamp);
await communicationEventRepository.UpdateAsync(entity);
}
else
{
throw new UserFriendlyException("Invalid message-id.");
}
}
else
{
throw new UserFriendlyException("Invalid signature.");
}
}
Однако мы получаемпустая строка назад для MessageId.Мы не можем назвать параметр функции Message-Id из-за правил именования в C #.Мы также не можем получить данные из тела POST в виде JSON, поскольку Mailgun поддерживает только x-www-form-urlencoded для своих вызовов webhook.Есть идеи?