12

ASP.NET MVC アプリケーションを実行しようとすると、次のエラーが表示されます。

「アカウント」のリクエストで、次の一致するコントローラーが見つかりました: uqs.Controllers.Admin.AccountController MvcApplication1.Controllers.AccountController

プロジェクトを検索しMvcApplication1.Controllers.AccountControllerて削除しましたが、一致するものが見つかりません。

それを修正するためにルートを登録しようとしました:

 routes.MapRoute(
     "LogAccount", // Route name
     "{controller}/{action}/{id}", // URL with parameters
     new { controller = "Account", action = "LogOn", id = "" },
     new string[] { "uqs.Controllers.Admin" } // Parameter defaults
 );

しかし、それは解決しませんでした。

「Account」という名前のコントローラーに一致する複数のタイプが見つかりました。

この問題を解決するにはどうすればよいですか?

4

6 に答える 6

61

プロジェクトをリファクタリングし、デフォルトの名前空間とアセンブリを「MVCApplication1」から「uqs」に変更すると、binディレクトリに2つのアセンブリ(新しいアセンブリと古いアセンブリ)が作成される可能性があります。AccountControllerが両方のアセンブリにあるため、このエラーが発生する可能性があります。

古いMVCApplication1.dllのbinディレクトリをクリーンアップします。

于 2010-05-13T15:48:18.727 に答える
11

Account異なる名前空間であっても、アプリケーションで複数のコントローラーを指定することはできません。

これらのコントローラーを分割する必要がありますArea(ASP.NET MVC 2 の機能)。

検索を実行すると、アプリケーションで名前がAccountController付けられたすべてのコントローラーが見つかります。両方が必要な場合はAccount別の場所に移動するか、一方を削除します。Areas

于 2010-04-13T12:54:36.797 に答える
4

これと同じ問題がありました。ビンをきれいにして、私は行ってよかったです。

于 2012-09-05T07:46:50.393 に答える
3

名前空間が指定されていても、問題のやや紛らわしいバリエーション (同じエラー メッセージが表示されるという点で同様) が発生する可能性があります。MVC 3 は、この面で MVC 2 よりも少しうるさいと思います。


簡潔な答え:

コントローラーの名前空間が実際に呼び出しで指定された名前空間であることを確認してくださいMapRoute!!


長い答え:

私には 3 つの領域があります : //default ("")そして、それぞれにFacebookStoreAdminController

私はこのようにマップされたルートを持っています(私のデフォルトエリア用):

routes.MapRoute(
     "Default",
     "{controller}/{action}/{id}",
     new { controller = "Gateway", action = "Index", id = UrlParameter.Optional },
     new string[] { "RR.Controllers.Main" }
);

/admin へのリクエストで次のエラーが発生しました:

「admin」という名前のコントローラーに一致する複数のタイプが見つかりました。これは、このリクエスト ('{controller}/{action}/{id}') を処理するルートが名前空間を指定していない場合に発生する可能性があります...

「admin」のリクエストで、次の一致するコントローラーが見つかりました:

RR.FacebookControllers.AdminController
RR.Controllers.AdminController
RR.StoreControllers.AdminController

でもちょっと待って!コントローラーの名前空間を指定しませんでした....? どうしたの.... ?

私のデフォルト領域の管理コントローラの名前空間RR_MVC.ControllerRolling_Razor_MVC.Controller.Main.

何らかの理由で、MVC 2 では問題が発生しませんでしたが、MVC 3 では問題が発生します。MVC 3 では、潜在的なあいまいさがある場合は、より明確にする必要があるだけだと思います。

于 2011-04-12T02:21:17.993 に答える
0

私はこの問題を抱えていました...

.csprojファイルの1つにあるプロジェクト参照を削除することで解決しました

于 2011-11-21T10:56:52.213 に答える
0

AccountControllerASP.NET MVC Visual Studio テンプレートによって自動的に生成されます。にありますControllers\AccountController.cs。プロジェクトで検索して削除してみてください。

于 2010-04-13T08:26:21.307 に答える