2

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

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

在没有 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")]

因为我对那个领域不感兴趣。在控制器中,我设置了

[ValidateInput(false)]

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

4

1 回答 1

3

我似乎已经让它工作了,以防有人遇到同样的问题......

我添加了一个新的模型绑定器,如下所示:

Asp.Net MVC 2 - 将模型的属性绑定到不同的命名值

然后我像这样改变了我的模型:

[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)]

在控制器上。

希望对某人有所帮助。

于 2013-02-04T19:27:53.490 回答