2012-03-15 12 views
0

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を使ってルートを再配置する必要がありましたが、今は静的リンクはもう動作しません。

すべてのアイデア?

+0

https://portal.customerx.com/intranet/tool/asdf/foo/bar/1337/test-1 - この結果の表示コードは何ですか –

+0

私は正しく私の_Layout.cshtmlであなたを理解したいと思いますページ私は次の行を持っています: Support AlCaponi

+0

不幸はあなたに問題をテストすることはできませんが、私は問題が何であるか理解し始めました。簡単な解決策は、特定のURLに対してiis書き換えルールを入れることです。とにかく私はちょうどあなたが静的なhrefの変更されたURLを取得する方法を理解できません –

答えて

0

は、HTTPSを追加://そうでない場合は、IISは、私はさまざまな方法で着信および発信ルートをバインドする必要が同様の問題を持っていた

+0

また試してみましたが、どちらも助けてくれませんでした。とにかくありがとう! – AlCaponi

+0

@AlCaponi質問を編集して最後に解決策を追加することができます – Chao

+0

私の質問を編集しましたが、解決策はまだ見つかりませんでした – AlCaponi

0

サイトotのルートfolerからこのリソースを探します。

私は、着信バインディングを先に入れて(これは本当に着信時に特定のルートを強制することはできません)、これを行いました。発信リンクについては、Html.RouteLinkを使用し、その位置に関係なく使用するルートを指定できます。

関連する問題