IISワイルドカードマッピングがAJAXの呼び出しを壊すのはなぜですか?
-
13-09-2019 - |
質問
jqueryを使用してAjaxコールを作成しようとしていますが、IIS 6にワイルドカードマッピング(.netに)がオンになっているため、動作しないようです。マッピングを無効にすると、すべてが魔法のように機能します。
an.aspxページと.asmx Webサービスの両方のメソッドにWebメソッド属性を配置しましたが、どちらも機能しません。 AJAX呼び出しに使用しているサンプルURLは次のとおりです。
localhost/UserChecker.aspx/CheckIfUserEmailsExists
localhost/UserChecker.asmx/CheckIfUserEmailsExists
.NETがURLを解釈している方法で何かであるに違いないと思いますが、理由は完全にはわかりません。さらに重要なことは、ワイルドカードマッピングを無効にする以外に、それを修正する方法がわかりません。他の方法はありますか?
アップデート
私が使用しているCMS(Kentico)はいくつかのURLルーティングを行いますが、Global.asax.csコードのルーティングをスキップしても、404を取得します。
前もって感謝します!
解決
IISのワイルドカードマッピングにより、最初にワイルドカードハンドラーを介して最初のリクエストが実行されます。これは、CMSによるURL書き換え(またはURLルーティング)の前に行われます。
それがあなたが404を取得している理由だと思います。
また、WildCardマッピングの「Verify Fileが存在する」チェックボックスを無効にして、実際のURLが後で他の何かに書き換えられる場合にシナリオに応えることもできます。
他のヒント
これは完全な答えではありませんが、解決策の方向に向かっていることを願っています。
ブラウザで直接URLにアクセスし、いくつかの適切に配置されたブレークポイントを使用して問題を追跡しようとしましたか?
404を取得している場合、ルーティングのルールが機能していないようです。
見た動作についてもう少し情報を提供できる場合は、これを更新します
アップデート
何が起こっているのかはこれだと思います:
拡張機能を使用してファイルの別のマッピングを提供しています(これらの場合.aspxおよび.asmx):
localhost/userchecker.aspx/checkifuseremailsexists
localhost/userchecker.asmx/checkifuseremailsexists
これらのマッピングは、ワイルドカードマッピングをオフにすると使用され、「/checkifuseremailsexists」は使用または無視されます。ワイルドカードマッピングをオンにすると、ルーティングはアプリに正しく「ルーティング」する方法を知らせません。
拡張機能を削除した場合(ワイルドカードマッピングがオンになっています)、次の動作はありますか?
localhost/userchecker/checkifuseremailsexists
適切なURLを除外リストに追加します。サイトマネージャー - > [設定]タブで「除外URL」設定を使用します。 (基本的なヘルプドキュメント)
CMSフレームワークの外でURLをチェックすることをお勧めします。 URLルーティングには問題が必要です。ワイルドカードマッピングなしでそれがどのように機能していたかはありません。
理解する質問:1。ワイルドカードマッピングなしで試してみるときにCMSを実行していますか? 2.このCMSシステムはIISとどのように相互作用しますか。 Iaspi dll?またはHTTPハンドラー/モジュール?