ASP.NET MVC プロジェクトで奇妙なルーティングの問題が発生しました。皆さんの助けが必要です。
プロジェクトをローカルホストから実行するか、サーバーで直接展開しているときに実行すると、全体的にすべてが正常に機能しますhttp://myServerName
。異なる仮想ディレクトリの下にあるサーバー上のさまざまな環境にアプリケーションをデプロイすると、問題が発生します。例:http://myServerName/QaEnviornment
またはhttp://myServerName/TestEnviornment
問題は、アプリケーション URL へのすべての Javascript 呼び出しが、環境の仮想ディレクトリを無視して失敗することです。たとえば、私の QA サーバーでは、Ajax 呼び出しを行う必要があるときはいつでも、次のような標準的なアプローチをとっています。
var myUrl = '/ControllerName/ActionMethodName/'
$.ajax({url:myUrl,success:function(){Do stuff} })
私のアプリケーションは にデプロイされているため、http://myServerName/QaEnviornment
レンダリングすると myUrl が になると予想されますhttp://myServerName/QaEnviornment/ControllerName/ActionMethodName
。代わりに戻ってきてas http://myServerName/ControllerName/ActionMethodName
、もちろん失敗します。
今のところこれを回避するために、環境フォルダー名を含むグローバル Javascript 変数を宣言しました。JavaScript 呼び出し用の URL を作成するときは、常にそれらを var として構築することを覚えておく必要があります。myUrl = myGlobalFolderVar + '/ControllerName/ActionMethodName/'
グローバルな JavaScript 変数を使用してこの問題を回避することは、私には悪い解決策のように思えます。JavaScript 呼び出しが行われるたびに、アプリケーションが実行されているサブフォルダーが常に URL に含まれるように、ルーティングを適切に機能させるためにできることはありますか?