5

Mailgun の Webhook を .Net Web API アプリケーションに実装したいのですが、POST するパラメータの一部にダッシュが含まれています。どうすればそれを回避できますか?

投稿の例:

client-type=browser&city=San+Francisco&domain=telzio.com&device-type=desktop&my_var_1=Mailgun+Variable+%231&country=US&region=CA&client-name=Chrome&user-agent=Mozilla%2F5.0+%28X11%3B+Linux+x86_64%29+AppleWebKit%2F537.31+%28KHTML%2C+like+Gecko%29+Chrome%2F26.0.1410.43+Safari%2F537.31&client-os=Linux&my-var-2=awesome&ip=50.56.129.169&recipient=alice%40example.com&event=opened&timestamp=1405017113&token=6khi46bvupa1358v0b3iy29kwumpbajb3ioz4illb6v9bbqkp6&signature=88f46b9ba63ff475bbb3ab193696cf45bf2f25e7e62b44f1e492ff4e085730dd

私のモデル:

public class MailgunModel
{
    public string City { get; set; }
    public string Domain { get; set; }
    public string Country { get; set; }
    public string Region { get; set; }
    public string Ip { get; set; }
    public string Recipient { get; set; }
    public string Event { get; set; }
    public long Timestamp { get; set; }
    public string Token { get; set; }
    public string Signature { get; set; }

    public string ClientType get; set; }
    public string DeviceType { get; set; }
    public string ClientName { get; set; }
    public string UserAgent { get; set; }
    public string ClientOs { get; set; }
}
4

2 に答える 2

6

最も簡単な方法の 1 つは、FormDataCollection必要な変数を受け取ってアクセスすることです。各プロパティを手動でマップする必要があるため、不十分ですが、単純なシナリオでは機能します。

public IHttpActionResult AppointmentMessage(FormDataCollection data)
{
    if (data != null)
    {
        var msg = new MailGunMessage();
        msg.From = data["from"];
        msg.To = data["to"];
        msg.Subject = data["subject"];
        msg.BodyHtml = data["body-html"];
        msg.BodyPlain = data["body-pain"];
        // ... and so on
    }
    return this.Ok();
 }

他のオプションは、ここで説明されているように、モデルでカスタム モデル バインダーを使用することです: https://stackoverflow.com/a/4316327/1720615

于 2015-09-01T22:43:55.050 に答える