企業のイントラネット サイト用に MVC 3 アプリケーションを開発していますが、URL ヘルパーが正しい URL を生成しないことがあるという問題があります。アプリケーションは、ユーザーがサーバーに関する情報を知る必要がないように、基本的に標準化された URL を提供する IT 部門によって制御されるアクセス マネージャー アプリケーションを介してアクセスされます。たとえば、サーバー上のアプリケーションに直接アクセスするには、次の場所にアクセスします。
http://philsserver/App
アクセス マネージャーを介して、IT 部門から提供された次の URL を使用します。
http://secureintranet/PHILSAPP/App/
アプリケーションのいくつかの場所で MVC URL ヘルパーを使用しています - 問題は、「PHILSAPP」の部分が省略されていることがあることです - 「<a>
」リンク内で使用すると機能しますが、他の場所で使用すると機能しますではない。
たとえば、コードは次のとおりです。
<a href="@Url.Action("Index", "FormsAndTemplates")">
次のようにリンクを正しく作成します。
<a href="/PHILSAPP/App/FormsAndTemplates">
.
次のコード:
@Html.TextBox("lastName", ViewBag.LastName as string, new { @class = "input-mini", @autocomplete = Url.Action("QuickSearch", "Employee") })
生成:
<input autocomplete="/App/Employee/QuickSearch" class="input-mini" id="lastName" name="lastName" type="text" value="" />
この URL には「PHILSAPP」の部分が含まれていないことに注意してください。<a>
これは、JavaScript で URL ヘルパーを使用した場合や、" " タグ以外の場所で使用した場合にも発生します。なぜこれが起こるのか誰にも分かりますか?私が知る限り、Url.Action への両方の呼び出しはほとんど同じであるため、なぜこれが起こっているのかわかりません。この質問がすでに回答されている場合は申し訳ありませんが、同様の問題を抱えている人に関する情報を見つけることができませんでした. ご協力いただきありがとうございます。
更新: 要求に応じて、私のルートは以下のとおりです。
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional });
更新 2: 使用されているアクセス マネージャーは、Tivoli Identity Manager です。