現在、実行時に拡張機能をロードする必要がある動的システムを開発中です。ASP MVCコアRC1は、実行時にロードされた他のアセンブリにコントローラ、ビュー、モデルを配置します
拡張子は、Controllerで終わるクラス、/ View/ControllerNameにあるビューとViewComponents、および関連するモデルで、コントローラフォルダを意味するMVCアプリケーションと同じアーキテクチャでビルドされています。
プロジェクトへの参照として、このプロジェクトを追加することはできませんので、私は、実行時にそれらをロードするミドルウェア作成:これまでのところは良い
foreach (var item in extensions)
{
Assembly.LoadFrom([email protected]"extensions\{item.Name}.dll");
}
を、それらが実行時にロードされています。しかし、私が拡張機能のコントローラの1つで作成されたルートにアクセスしようとすると、WebSiteは私に404応答を返します。
私は参考としてエクステンションを追加しようとしましたが、それはうまく動作するので、これは私のエクステンション内の問題ではありません。
DLLのコントローラをMVCのメインサイトに登録する方法を教えてください。
これは、したがって、この答えは有効ではないと思われ、これはASPコアで、ASP MVC 4ではありません:依存性の注入が解決策になる可能性がasp.net mvc put controllers into a separate project
、私は私の拡張を行うための任意の解決策を見つけていません自身のためにサービスを登録してください(拡張機能の作成者にとっては複雑です)。
拡張のための私のルーティングが定義されているコントローラ側:
[Route("[controller]/[action]")]
public class LotteryController : Controller { ... }
私Startup.csで、私が守ってきた、実際にデフォルトルート:事実はある
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
});
が、私は私の延長をしたいです経路を有効にする:http://localhost/Lottery/Index
そして空白のページが表示されます。私の現在のindexアクションは、テスト目的のために、私の拡張プロジェクト階層
エクステンションをロードするコードではなく、ルーティングに問題がある可能性はありますか?コントローラコードやMVCの設定をStartup.csに提供することは可能でしょうか? – lawst
私の質問に追加しました – cdie
あなたはデフォルトルーティングを使用しているようです。あなたはまた、 "インデックス"のコントローラメソッドを提供できますか?あなたはまたあなたの質問で "View/ControllerName"と述べましたが、デフォルトのビューディレクトリ構造は "Views/ControllerName"でなければならないので、ビューが正しい場所にあることも確認できますか? – lawst