2

Mailgun配信の 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 に答える