現在、無関係な MVC3 プロジェクトが 2 つオンラインでホストされています。
1 つは正常に動作しますが、もう 1 つは動作せず、次のエラーが発生します。
「Home」という名前のコントローラーに一致する複数のタイプが見つかりました。これは、このリクエスト (「{controller}/{action}/{id}」) を処理するルートが、リクエストに一致するコントローラーを検索するための名前空間を指定していない場合に発生する可能性があります。
この場合は、「namespaces」パラメータを受け取る「MapRoute」メソッドのオーバーロードを呼び出して、このルートを登録します。
私のホスティング業者は、FTP アクセスを許可し、そのフォルダー内に各アプリケーションごとに 1 つずつ、合計 2 つのフォルダーを作成します。
ftpフォルダA2/foo.com
ftpフォルダA2/bar.com
foo.com は正常に動作し、アプリケーションをローカル ファイル システムに公開し、コンテンツを FTP で転送すると動作します。
bar.com をアップロードして実行しようとすると、上記の問題が発生し、サイトを使用できなくなります。一方、foo.com は引き続き動作します。
bar.com は ftpFolderA2 内のあらゆる場所からコントローラを検索しているため、別のものを見つけているのでしょうかHomeController
? コントローラ フォルダのみを検索するように指示するにはどうすればよいでしょうか?
事実:
- 領域は使用しません。これらは完全に無関係な 2 つのプロジェクトです。公開した各プロジェクトをそれぞれのフォルダーに配置します。特別なことは何もありません。
- 各プロジェクトには HomeController が 1 つだけあります。
これが問題だと確認できる人はいますか?
ベストアンサー1
このエラーが発生する可能性がある別のシナリオを次に示します。プロジェクトの名前を変更してアセンブリのファイル名が変わると、ASP.NET アセンブリのバージョンが 2 つ存在することになり、このエラーが再現される可能性があります。
解決方法は、bin
フォルダに移動して古い dll を削除することです。(「プロジェクトの再構築」を試しましたが、削除されませんでした。bin
削除されていることを確認してください)