0

初期ロード後に追加コンテンツの Ajax 要求を実行する IIS 内のサブ アプリケーションで MVC サイトを実行しています。

問題は、ユーザーが URL の末尾の「/」を入力しないと、XHR オブジェクトによって要求された URL の先頭に「/」が追加されるため、AJAX 要求が失敗することです。これにより、ルート ドメインに移動し、アプリケーション領域を離れます。

以下は、私が何を意味するかを示す Fiddler トレースです。

フィドラー トレース

最初の 3 つのエントリは、MVC 環境の外で何が起こるかを確認するためにセットアップした基本的な HTML サイトを示しています。この場合、末尾の「/」が指定されていない場合、IIS は末尾のスラッシュを含む URL にリダイレクトを送信します。後続の AJAX 要求は成功します。

次の 2 つのエントリの MVC 内では、リダイレクトは発行されず、AJAX 要求は失敗します。末尾の「/」がない場合、MVC シナリオで (できれば IIS から) 301 リダイレクトを取得する方法はありますか?

4

1 に答える 1

2

IIS URL 書き換えモジュールを構成して、必要なことを行うことができます。このページの最初の項目を参照してください(最初に見つけた検索結果)。

私が提案する別のオプションは、次のようなものを使用して ajax リクエストを生成できること@Url.Action("action", "controller")です。これにより、スラッシュの問題が処理されるはずです。これを行う場合、アプリがどのようにホストされているかは問題ではなく、機能するはずです。

jQueryを使用した、私が意味することのより完全な例:

$.ajax({
    type: "POST",
    url: @Url.Action("action", "controller"),
    data: $("form").serialize(),
    success: function (result) {
        ...
    },
    failure: function () {
        ...
    }
});
于 2013-05-30T16:22:45.893 に答える