わかりやすい作業のように見せている - 私のプロジェクトの別のアセンブリからコントローラを呼び出す。ASP.Net MVC 4.コントローラを別のアセンブリにルーティングするとエラー404が返される
しかし、私がそのコントローラから情報を要求すると、エラー404が発生します。私は過去5〜6時間それと戦っています。私は小さくて明白なものを見逃しているかもしれないと思っています。助言のために。
ルーティングとエラー404に関するstakoverflow同様の質問がありましたが、このようなエラーが発生せず、同様のコード構造を使用した別のプロトタイププロジェクトを実装したとき、私はその問題が私のものとは異なると考えています。
私が達成したいことの全体的な目標は、hereのように独立したプロジェクトの中に領域を実装することです。 小さなプロトタイプのリンクで説明されているように(そして完璧に動作する)、今実際のプロジェクトに応募しようとしているようなことはすべてやった。
これは私がアセンブリを含むとルートを管理する方法である:
- 隠された子プロジェクトを代表する分野の一つとの主なプロジェクトがあり、「CommunicationBus」
「CommunicationBus」プロジェクトは、クラスが含まれています"CommunicationBusAreaRegistration"。ルートを登録すると正しく動作します。私はここでデバッガを使うことができます。また、私はroutedebuggerを使ってこのルートを見ることができます(下記スクリーンショット参照)。私もこのクラスのネームスペースで演奏し、最後に
.Areas.CommunicationBus
を追加しようとしましたが、気づいたことはありませんでした。私はルートに以下の方法を登録し、メインプロジェクトのGlobal.asaxのでnamespace MBVD.MainProject.UI { public class CommunicationBusAreaRegistration : AreaRegistration { public override string AreaName { get { return "CommunicationBus"; } } public override void RegisterArea(AreaRegistrationContext context) { context.MapRoute( "CommunicationBus_default", "CommunicationBus/{controller}/{action}/{id}", new { action = "Index", id = UrlParameter.Optional }, new string[] { "CommunicationBus.Controllers" } ); } } }
:
public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); routes.MapRoute( "Default", // Route name "{controller}/{action}/{id}", new { controller = "Home", action = "Index", id = UrlParameter.Optional }, new[] { "MBVD.MainProject.UI.Controllers" } ); }
私は「CommunicationBus.Controllers」ここで参照した場合、私はもはやメインの開いているページをすることができません応用。しかし、私はここでメインアプリケーションのコントローラへのパスのみを登録する必要があると信じます。
メインプロジェクトのbinフォルダに出力パスが設定されています。私がCommunicationBusをビルドするたびに、私はメインプロジェクトに新しく.dllを取得します。私がメインプロジェクト
@Html.ActionLink("test","Index","Test", new {Area="CommunicationBus"}, null)
へのリンクを追加しました
namespace CommunicationBus.Controllers { public class TestController : Controller { [HttpGet] public string Index() { return "It works!"; } } }
:
- 私はCommunicationBusプロジェクトにシンプルなコントローラを追加
はlocalhost:63254/CommunicationBus /テスト
私は私は両方のプロジェクトのためのASP.NET MVC 4を使用
:それは疑わしい何も表示されませんroutedebuggerと。
私はこのエラーが発生する理由を理解するために何ができるのかを知りたいと思います。