4

githubでMandrill .NETを使ってみた人向けです。

受信メールを処理できるようにする必要があり、Mandrill のドキュメントに基づいて、対応するパブリック URL を使用して Webhook を作成する必要があります。アクション メソッドの実装に関しては、WebHookEvent.cs のドキュメントに記載されているメソッド シグネチャに従いました。その時点で、すべてが期待どおりに機能していました。webhook イベントに登録した mandrill 電子メールにメールを送信すると、アクション メソッドが Mandrill から呼び出されます。議論のために、メソッド名が ProcessInboundMail であると仮定しましょう。

今後、私のアプリはマルチテナンシーをサポートする必要があります。したがって、ProcessInboundMail メソッドで簡単に処理する代わりに、適切なサブドメイン (例: company1.myapp.com/mycontroller/ProcessInboundMail) を含む URL にリダイレクトする必要があります。それ以来、私は独特の問題に遭遇し始めました。

マンドリル メールにメールを送信すると、アクション メソッドが正しく実行されなくなります。Webhook が機能しているかどうかを確認するために、mandrill 管理ページ > Inbound > Domains (InboundDomains.png) に移動し、[Routes] ボタンをクリックしてから、[send test] (MailboxRoutes.png) ボタンをクリックしましたが、このエラーしか表示されませんでした。メッセージ: Webhook がエラーで失敗しました: http://myapp.com/mycontroller/ProcessInboundMailへの POSTが 411 で失敗しました: 長さが必要です 長さが必要です HTTP エラー 411. 要求はチャンクされているか、コンテンツの長さが必要です。

私の ProcessInboundMail は次のようになります。

    [AllowAnonymous]
    [ValidateInput(false)] // May be required if accepting inbound webhooks
    [AcceptVerbs(HttpVerbs.Get | HttpVerbs.Post | HttpVerbs.Head)]
    public ActionResult ProcessInboundMail(string id, FormCollection val)
    {
        var events = Mandrill.JSON.Parse<List<Mandrill.WebHookEvent>>(val.Get("mandrill_events"));
        foreach (var e in events)
        {
    //logic here...
            var redirectResult = Redirect(toSomeUrl);
            redirectResult.ExecuteResult(this.ControllerContext);   
         }
        return Json(1, JsonRequestBehavior.AllowGet);
    }

私の質問は、リダイレクトを使用していないときに「テストの送信」をクリックすると成功したのに、リダイレクトを使用するようになったので、「テストの送信」をクリックするとこの HTTP エラー 411 が発生するのはなぜですか? ここで何が間違っていますか?

4

0 に答える 0