ASP.NET MVCには一見奇妙な問題があります。ASP.NET MVCイントラネットへのルーティングページ
お客様XのWebサイトを構築し、そのサーバーに展開しました。最初の問題は、それがそうのページへのすべての要求が通過小説Access Managerの背後にあるということです。
https://portal.customerx.com/intranet/tool/ {、ここでは、MVCのための私のルートを開始}
私はこのようなGlobol.asaxを設定しているため。
今要求は、私が自分のイントラネットにある静的なWebサイトにホームページ上のハイパーリンクを追加するということでしたroutes.MapRoute(
"SubfolderZielsetzung", // Route name
"intranet/tool" + "{controller}/{action}/{objectOneId}", // URL with parameters
new { controller = "Home", action = "Index", objectOneId = "objectOneId" } // Parameter defaults
);
:
https://portal.customerx.com/asdf/foo/bar/1337/test-1
私は単にHTMLタグには、以下のホームページに追加した場合:
<a href="https://portal.customerx.com/asdf/foo/bar/1337/test-1">Support</a>
だから、今奇妙なことをしています。何らかの理由で
<a href="https://portal.customerx.com/intranet/tool/asdf/foo/bar/1337/test-1">
、と私は、ルーティングエンジンが私のハイパーリンクを変更し、私は、任意のHTMLヘルパーを使用していないにもかかわらず、およびURL接頭辞を設定し、なぜ、答えを得ることができない。これは、エンジンからレンダリングされるものです「https://portal.customerx.com/」
EDIT
後、私は、私は答えを見つけたことを昨日書きましたが、それが判明したとして、それはどちらかの答えではありませんでした。
私はこのarticlteからヒントとしてグローバルAsaxの先頭に次のルートを入れている: Asp.net MVC and redirect to External site
routes.MapRoute(
"RedirectSiteRoute",
"{site}",
new { },
new { site = new SiteRouteConstraint() }
);
と:
public class SiteRouteConstraint : IRouteConstraint
{
public bool Match(System.Web.HttpContextBase httpContext, Route route, string parameterName, RouteValueDictionary values, RouteDirection routeDirection)
{
string[] allowedSites = new[] { "https://portal.customerx.com/intranet/tool/asdf/foo/bar/1337/test-1" };
return allowedSites.Any(x => x == values[parameterName].ToString());
}
}
をそれから私が持つすべてのルートを移動しますURLグローバルなasaxの末尾に接頭辞が付いているので、URL_Prefixのないすべてのルートが一番上になりました。静的リンクがうまく働いた顧客のプラットフォーム上で
それとpublic static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"RedirectSiteRoute",
"{site}",
new { },
new { site = new SiteRouteConstraint() }
);
routes.MapRoute(
"Grundauftrag", // Route name
"{controller}/{action}/{objectOneId}/{objectTwoId}/{objectThreeId}", // URL with parameters
new { controller = "Home", action = "Index", objectOneId = "objectOneId", objectTwoId = "objectTwoId", objectThreeId = "objectThreeId" } // Parameter defaults
);
routes.MapRoute(
"Zielsetzung", // Route name
"{controller}/{action}/{objectOneId}/{objectTwoId}", // URL with parameters
new { controller = "Home", action = "Index", objectOneId = "objectOneId", objectTwoId = "objectTwoId" } // Parameter defaults
);
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{objectOneId}", // URL with parameters
new { controller = "Home", action = "Index", objectOneId = "objectOneId" } // Parameter defaults
);
routes.MapRoute(
"SubfolderGrundauftrag", // Route name
Const.URL_PREFIX + "{controller}/{action}/{objectOneId}/{objectTwoId}/{objectThreeId}", // URL with parameters
new { controller = "Home", action = "Index", objectOneId = "objectOneId", objectTwoId = "objectTwoId", objectThreeId = "objectThreeId" } // Parameter defaults
);
routes.MapRoute(
"SubfolderZielsetzung", // Route name
Const.URL_PREFIX + "{controller}/{action}/{objectOneId}/{objectTwoId}", // URL with parameters
new { controller = "Home", action = "Index", objectOneId = "objectOneId", objectTwoId = "objectTwoId" } // Parameter defaults
);
routes.MapRoute(
"Subfolder", // Route name
Const.URL_PREFIX + "{controller}/{action}/{objectOneId}", // URL with parameters
new { controller = "Home", action = "Index", objectOneId = "objectOneId" } // Parameter defaults
);
}
:
これは、ように見えた方法です。しかし、私のページ内の他のすべてのリンクはもう動作しませんでした...
私はURL_Prefixを使ってルートを再配置する必要がありましたが、今は静的リンクはもう動作しません。
すべてのアイデア?
https://portal.customerx.com/intranet/tool/asdf/foo/bar/1337/test-1 - この結果の表示コードは何ですか –
私は正しく私の_Layout.cshtmlであなたを理解したいと思いますページ私は次の行を持っています: Support – AlCaponi
不幸はあなたに問題をテストすることはできませんが、私は問題が何であるか理解し始めました。簡単な解決策は、特定のURLに対してiis書き換えルールを入れることです。とにかく私はちょうどあなたが静的なhrefの変更されたURLを取得する方法を理解できません –