デフォルトのファクトリがコントローラの完全な名前(名前空間付き)を返さないのはなぜですか? Service Locator と autofac を使用しています。
using System.Web.Mvc;
using Microsoft.Practices.ServiceLocation;
namespace Application.Core.MVC
{
public override IController CreateController(System.Web.Routing.RequestContext requestContext, string **controllerName**)
{
return ServiceLocator.Current.GetInstance<IController>(controllerName);
}
}
私は2つのホームコントローラーを持っていました(エリアブログの下に1つ)
controllerName は、上記のコードで両方の完全修飾名なしで「ホーム」のみを返します。これにより、依存性注入のためにコントローラーの名前を登録しようとすると問題が発生します。この状況に応じて、コントローラーを今すぐ登録する方法を次に示します。これでも例外なくページが表示されます。しかし、 http://localhost/Homeにアクセスすると 、両方のコントローラーが関係なく呼び出されました。
foreach (var tp in currentAssemblyControllersTypes)
builder.Register(tp).FactoryScoped().Named(tp.Name.Replace("Controller", ""));
誰でも助けてくれますか?ありがとう。