MVC4 Mailgun发布了webhook

时间:2013-02-04 13:07:54

标签: asp.net-mvc-4 model-binding webhooks mailgun

我在使用Mailgun提供的webhook时遇到问题,可以在此处找到:http://documentation.mailgun.net/user_manual.html#events-webhooks,查找“Delivered Event Webhook”

我无法引用Request.Params [“Message-Id”],除非我将应用的requestValidationMode修改为2.0

在没有requestValidationMode = 2.0的情况下尝试引用此字段时,我确实遇到了可能不安全的错误。该字段的内容是:< 20130203200110.12345.12345@mydomain.mailgun.org>。我还尝试声明一个模型来利用自动模型绑定。我的模型看起来像这样:

public class MailgunDeliveredEvent
{
    public string Id { get; set; }
    public string Event { get; set; }
    public string Recipient { get; set; }
    public string Domain { get; set; }

    [AllowHtml]
    [JsonProperty(PropertyName="Message-Id")]
    public object MessageId { get; set; }

    public int Timestamp { get; set; }
    public string Token { get; set; }
    public string Signature { get; set; }        
}

当我尝试引用MessageId字段时,它返回null。我试图添加

[Bind(Exclude="message-headers")]

因为我对那个领域不感兴趣。 在Controller中,我已经设置了

[ValidateInput(false)]

我似乎无法获得Message-Id字段。有什么帮助吗?

1 个答案:

答案 0 :(得分:2)

我似乎已经开始工作,万一有人遇到同样的问题......

我在这里引用了一个新的模型绑定器:

Asp.Net MVC 2 - Bind a model's property to a different named value

然后我改变了我的模型:

[ModelBinder(typeof(DefaultModelBinderEx))]
public class MailgunDeliveredEvent
{
    public string Id { get; set; }
    public string Event { get; set; }
    public string Recipient { get; set; }
    public string Domain { get; set; }

    [BindAlias("Message-Id")]
    public string MessageId { get; set; }

    public int Timestamp { get; set; }
    public string Token { get; set; }
    public string Signature { get; set; }        
}

似乎一切正常,我不需要打电话

[ValidateInput(false)]

在控制器上。

希望能有所帮助。