2011-02-01 16 views
4

私はMVC 3アプリケーションのAuthとUsersにいくつかの領域を持っています。私はPhil Haacks Route Debugging toolを使って自分のルートのリストを表示し、自分のURLに基​​づいてどのルートが選択されているかを確認します。ASP.NET MVCはエリアのデフォルトルートを作成しますか

しかし、AreaRegistrationファイルまたはGlobalasaxで作成していないルートがいくつか存在し、どこから来たのか、それらを取り除く方法がわかりません。ルートは黄色で強調表示されています。

また、私の認証コントローラのログインアクションを指している私の認証エリア(緑色で強調表示)にデフォルトルートが作成されていることがわかります。 RouteTableをデバッグして、AreaRegistration.RegisterAllAreas();メソッドが呼び出されます。しかし、AreaRegistrationで追加されることはありません。

ASP.NET MVCはこれをデフォルトとして追加しますか?もしそうなら、何とか削除できますか?

enter image description here

答えて

5

をこの問題を解決しようとする日、他の誰かが同じ問題を抱えている場合に私が答えを投稿すると思った。

最後に、私のアプリケーションからすべての領域を取り除き、基本的なGlobal.asaxルーティングがありました。私がアプリケーションを走らせたとき、私は経路デバッガーで、ルーティングコレクションにまだ存在していない領域からの経路がまだ入力されているのを見ることができました。 ASP.NETの一時ファイルからすべてを削除したり、IIS AppPoolsを使いこなしたり、ブラウザのデータを消去したりするなど、多くのことを試した後、私はついに答えました。

ウェブサイトのbinフォルダからすべてを削除しましたが、再構築して低かったので、ルートはなくなりました。私は記述された設定で私の領域を元に戻し、すべてが正常に動作しています。

なぜ私のMVCアプリが古いルートを保持していたのか分かりませんが、ビンがクリアされ、新しいdllが作成したものがすべて正常に機能するようになったらすぐに。もし誰かがなぜこのことが分かっていれば、私は非常に興味があります。

2

はい、各エリアは、エリアのルートを定義し、それ自身のAreaRegistrationファイルを持っています。あなたの地域のルートフォルダでそれを探します。お使いのユーザーエリアの

は、地域に見える - >ユーザ - > UserAreaRegistration.cs

それはこのような何か含まれている必要があります私は自分の質問に答えるのが好きしかし後にはありません

public class UserAreaRegistration : AreaRegistration 
    { 
     public override string AreaName 
     { 
      get 
      { 
       return "User"; 
      } 
     } 

     public override void RegisterArea(AreaRegistrationContext context) 
     { 
      context.MapRoute(
       "User_default", 
       "User/{controller}/{action}/{id}", 
       new { action = "Index", id = UrlParameter.Optional } 
      ); 
     } 
    } 
+0

ありがとうございますfrennky私はすでにこれを知っており、私の質問に記載されているようにエリア登録を設定しました。私のAuthAreaRegistration.csファイルのデフォルトルートは上記の緑色で強調表示されています。私が理解していないことは、私のAreaRegistration.csファイルとGlobal.asaxファイルの両方にデフォルトルートを設定していて、黄色で強調表示されているルートがどこから来たのですか?既定のルートを編集してカスタムルートにするため、MVCで作成されますか?もしそうなら、そのデフォルトルートを取り除くことができますか? – Cragly

+0

地域やglobal.asax、Application_Startメソッドでルート登録のコードを提供できますか? – frennky

+0

私はこの質問を投稿した理由は、両方のタイプの領域のコードを詳述するこの質問に対する答えを見つけようとすることでした。 http://stackoverflow.com/questions/4855574/asp-net-mvc-area-not-picking-up-the-correct-route – Cragly

0

プロジェクトの名前を変更しましたか?おそらくbinフォルダ内のすべてをスキャンすることによって、経路を反映させてロードします。したがって、コードをリファクタリングしてアセンブリ名を変更した場合、古いコードを取得してそれらのルートを簡単に登録することができます。

JB

+0

コメントをお送りいただきありがとうございますが、プロジェクトの名前を変更したことはありませんが、他のリファクタリングの変更が原因である可能性があります。 – Cragly

関連する問題