ビューを読み込もうとしているときに、上記の例外が発生します。
Unityを使用してコントローラーインスタンスを初期化します。それでも上記のエラーが発生します。
これが私のコントローラーです。
public class SiteController : Controller
{
private ISiteRepository _repository;
public SiteController(ISiteRepository repository)
{
_repository = repository;
}
//
// GET: /Site/
public ActionResult Index()
{
return View();
}
//
// GET: /Site/Details/5
public ActionResult Details(int id)
{
return View();
}}
そして、これが私のGlobal.asax.csです
protected void Application_Start()
{
ConfigApi(GlobalConfiguration.Configuration);
AreaRegistration.RegisterAllAreas();
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
}
static void ConfigApi(HttpConfiguration config)
{
var unity = new UnityContainer();
unity.RegisterType<SiteController>();
unity.RegisterType<ISiteRepository, SiteRepository>(new HierarchicalLifetimeManager());
config.DependencyResolver = new IocContainer(unity);
}
これが私のSiteRepositoryクラスです。
public class SiteRepository:ISiteRepository
{
private readonly SampleMVCEntities _dbContext;
public SiteRepository()
{
_dbContext = new SampleMVCEntities();
}
private IQueryable<SiteConfig> MapSiteConfig()
{
return _dbContext.SiteConfigs.Select(a => new SiteConfig
{
Name = a.Name,
LinkColour = a.LinkColour,
SiteLogo = a.SiteLogo,
SiteBrands = a.SiteBrands.Select(b => new Models.SiteBrand { SiteId = b.SiteId, BrandId = b.BrandId })
});
}
public IEnumerable<SiteConfig> GetAll()
{
return MapSiteConfig().AsEnumerable();
}}
これは私のエラースタックです。
このオブジェクトにはパラメーターなしのコンストラクターは定義されていません。説明:現在のWebリクエストの実行中に未処理の例外が発生しました。エラーとそれがコードのどこで発生したかについての詳細は、スタックトレースを確認してください。
例外の詳細:System.MissingMethodException:このオブジェクトにパラメーターなしのコンストラクターが定義されていません。
ソースエラー:
現在のWebリクエストの実行中に、未処理の例外が生成されました。例外の発生源と場所に関する情報は、以下の例外スタックトレースを使用して識別できます。
スタックトレース:
[MissingMethodException:このオブジェクトにパラメーターなしのコンストラクターが定義されていません。] System.RuntimeTypeHandle.CreateInstance(RuntimeType type、Boolean publicOnly、Boolean noCheck、Boolean&canBeCached、RuntimeMethodHandleInternal&ctor、Boolean&bNeedSecurityCheck)+0
System.RuntimeType.CreateInstanceSlow(Boolean publicOnly、Boolean skipCheckThis、ブールfillCache、StackCrawlMark&stackMark)+114
System.RuntimeType.CreateInstanceDefaultCtor(ブールpublicOnly、ブールskipCheckThis、ブールfillCache、StackCrawlMark&stackMark)+232 System.Activator.CreateInstance(タイプタイプ、ブール非パブリック)+83 System.Activator.CreateInstance(タイプタイプ)+6 System.Web.Mvc.DefaultControllerActivator.Create(RequestContext requestContext、Type controllerType)+55[InvalidOperationException:タイプ'Config.Controllers.SiteController'のコントローラーを作成しようとしたときにエラーが発生しました。コントローラーにパラメーターのないパブリックコンストラクターがあることを確認してください。]
System.Web.Mvc.DefaultControllerActivator.Create(RequestContext requestContext、Type controllerType)+179
System.Web.Mvc.DefaultControllerFactory.GetControllerInstance(RequestContext requestContext、Type controllerType)+80
システム。 Web.Mvc.DefaultControllerFactory.CreateController(RequestContext requestContext、String controllerName)+74
System.Web.Mvc.MvcHandler.ProcessRequestInit(HttpContextBase httpContext、IController&controller、IControllerFactory&factory)+197System.Web.Mvc。<>c_ DisplayClass6.b_2()+49System.Web.Mvc。<>c__DisplayClassb 1 func)+88 System.Web.Mvc.MvcHandler.BeginProcessRequest(HttpContextBase httpContext、AsyncCallback callback、Object state)+98 System.Web.Mvc.MvcHandler.BeginProcessRequest( HttpContext httpContext、AsyncCallbackコールバック、オブジェクト状態)+50 System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.BeginProcessRequest(HttpContext context、AsyncCallback cb、Object extraData)+16System.Web.CallHandlerExecutionStep.System.Web.HttpApplication 。 IExecutionStep.Execute()+268 System.Web.HttpApplication.ExecuteStep(IExecutionStep step、Boolean&completedSynchronously)+1551.<ProcessInApplicationTrust>b__a() +13 System.Web.Mvc.SecurityUtil.<GetCallInAppTrustThunk>b__0(Action f) +7 System.Web.Mvc.SecurityUtil.ProcessInApplicationTrust(Action action) +22
System.Web.Mvc.SecurityUtil.ProcessInApplicationTrust(Func
誰かが私を助けることができますか?
ありがとう。