我在使用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字段。有什么帮助吗?
答案 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)]
在控制器上。
希望能有所帮助。