2

MvcMembership で動作させるための適切な Unity 構成を見つけることができません。

この時点で、次のエラー メッセージが表示されます。

ブール型は構築できません。この値を提供するようにコンテナーを構成する必要があります。

依存関係を登録するための私のコードは次のとおりです。

    container.RegisterInstance<MembershipProvider>(Membership.Provider);

    container.RegisterType<IMembershipSettings,AspNetMembershipProviderSettingsWrapper>();
    container.RegisterType<IUserService, AspNetMembershipProviderWrapper>();
    container.RegisterType<IPasswordService, AspNetMembershipProviderWrapper>();
    container.RegisterType<IRolesService, AspNetRoleProviderWrapper>();
    container.RegisterType<ISmtpClient, SmtpClientProxy>();
    container.RegisterType<IRegistrationSettings, RegistrationSettings>();

そして、ここに私のスタックトレースがあります:

[InvalidOperationException: Boolean 型を構築できません。この値を提供するようにコンテナーを構成する必要があります。 StrategyChain.ExecuteBuildUp(IBuilderContext コンテキスト) +434 Microsoft.Practices.ObjectBuilder2.DynamicMethodBuildPlanCreatorPolicy.CreatePlan(IBuilderContext コンテキスト、NamedTypeBuildKey buildKey) +400 Microsoft.Practices.ObjectBuilder2.BuildPlanStrategy.PreBuildUp(IBuilderContext コンテキスト) +222 Microsoft.Practices.ObjectBuilder2.StrategyChain. ExecuteBuildUp(IBuilderContext コンテキスト) +434 Microsoft.Practices.

[ResolutionFailedException: 依存関係の解決に失敗しました。タイプ = "MyProject.Web.Areas.MvcMembership.Controllers.UserAdministrationController"、名前 = "(none)"。例外が発生しました: 解決中。

例外は次のとおりです。 InvalidOperationException - Boolean 型を構築できません。この値を提供するようにコンテナーを構成する必要があります。

例外発生時のコンテナは次のとおりでした。

MyProject.Web.Areas.MvcMembership.Controllers.UserAdministrationController の解決中、(none) コンストラクター MyProject.Web.Areas.MvcMembership.Controllers.UserAdministrationController(MvcMembership.Settings.IMembershipSettings membersSettings、MvcMembership.IUserService userService、MvcMembership.IPasswordService のパラメーター「membershipSettings」の解決中passwordService, MvcMembership.IRolesService rolesService, MvcMembership.ISmtpClient smtpClient) MvcMembership.Settings.AspNetMembershipProviderSettingsWrapper,(none) の解決 (MvcMembership.Settings.IMembershipSettings からマッピング, (none)) コンストラクター MvcMembership.Settings.AspNetMembershipProviderSettingsWrapper のパラメーター「登録」の解決(. Settings.IRegistrationSettings 登録、MvcMembership.Settings.IPasswordSettings パスワード、MvcMembership.Settings.ILoginSettings ログイン) MvcMembership.Settings.RegistrationSettings,(none) の解決 (MvcMembership.Settings.IRegistrationSettings, (none) からマップ) コンストラクターのパラメーター「requiresUniqueEmailAddress」の解決.Boolean,(none) ] Microsoft.Practices.Unity.UnityContainer.DoBuildUp(Type t, Object existing, String name, IEnumerableBoolean,(none) ] Microsoft.Practices.Unity.UnityContainer.DoBuildUp(Type t, Object existing, String name, IEnumerableBoolean,(none) ] Microsoft.Practices.Unity.UnityContainer.DoBuildUp(Type t, Object existing, String name, IEnumerable1 resolverOverrides) +546 Microsoft.Practices.Unity.UnityContainer.DoBuildUp(Type t, String name, IEnumerable1 resolverOverrides) +20 System.Web.Mvc.DefaultControllerActivator.Create(RequestContext requestContext, Type controllerType) +68

[InvalidOperationException: タイプ 'MyProject.Web.Areas.MvcMembership.Controllers.UserAdministrationController' のコントローラーを作成しようとしたときにエラーが発生しました。コントローラーにパラメーターのないパブリック コンストラクターがあることを確認してください。 Web.Mvc.MvcHandler.ProcessRequestInit(HttpContextBase httpContext, IController& controller, IControllerFactory& factory) +346 System.Web.Mvc.<>c_ DisplayClass6.b _2() +71 System.Web.Mvc.<>c__DisplayClassb1.<ProcessInApplicationTrust>b__a() +19 System.Web.Mvc.SecurityUtil.ProcessInApplicationTrust(Func1 関数) +161 System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +405 System.Web.HttpApplication.ExecuteStep(IExecutionStep ステップ、ブール値 & 完了同期) +375

4

1 に答える 1

1

上記のコンストラクターの上の次の属性を使用して、 UserAdministrationController に使用するコンストラクターを指定することで、これを解決しました。

[Microsoft.Practices.Unity.InjectionConstructor]

コンストラクターがオーバーロードされると、Unity は引数が最も多いものを使用しようとします。InjectionConstructor 属性を使用して、引数なしのコンストラクターを使用するように強制しました。

于 2012-09-14T18:13:42.063 に答える