新しいMVC4プロジェクトを作成しました。これは、作業中のデフォルトのテンプレート化されたコンテンツが多すぎるためです。認証を「なし」に設定し、コントローラー、基本クラス、ビューモデル、バリデーター(Fluent Validation)などのかなりの数のコンポーネントをコピーしました。元のHome
コントローラーとビューを保持しました。
その元のHome
ページは、そのIndex
アクションを通じて、機能するすべてです。私の「インポートされた」コントローラーはすべて、から派生しますが、そうComairRIController
ではありHome
ませんが、コントローラーの1つからこの継承を削除しController
、と同じようHome
に、から継承しようとしても効果はありません。私はまだ404を取得します。
プロジェクトはエラーや警告なしでビルドされ、ホーム/インデックスビューを開いて正常に実行されます。ここで何が間違っている可能性がありますか?どうすればこれを診断できますか?私のコンストラクターはComairRIController
呼び出されないので、リクエストはまったく進んでいません。
私はデフォルトルート構成を使用しています:
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
重要な情報:ソースプロジェクト(純粋なMVC4)と宛先プロジェクト(Orchardモジュール)はどちらもまったく同じ名前で、デフォルトの名前空間を持っています。できるだけ多くの名前空間の不一致を回避するために、意図的にこれを行いました。
新しい情報: NuGetを介してElmah 2.0.2を追加し、XMLファイルにログを記録するように設定しました。404ごとにエラーがログに記録されます。エラーは次のとおりです(簡潔にするためにスタックトレースを省略しました)。
<error errorId="db2b4236-b913-4b98-878e-f3e02fdff321"
application="/"
host="7F3KH5J"
type="System.Web.HttpException" \
message="The controller for path '/ApplicantProfile/Start' was not found or does not implement IController."
source="System.Web.Mvc"
detail="System.Web.HttpException (0x80004005): The controller for path '/ApplicantProfile/Start' was not found or does not implement IController.

興味深いことに、Elmah.axdのリクエストも404を返します。