2

structuremap メソッド、scan.WithDefaultConventions(); structuremap.MVC 5 では、依存性注入の規則 IMyClassName 、 MyClassName を想定しています。自分で作成したクラスしかない場合は、これで問題ありません。

ASP.NET MVC 5 アプリケーションをそのまま使用すると、規則 IMyClassName 、 MyClassName はユーザー ID で終了しません。ASP.NET Framework インターフェイス/クラスを無視するように構造マップを構成するにはどうすればよいですか?

4

2 に答える 2

7

StructureMap.MVC5 は、規則 IMyClass および MyClass を DI 解決に自動的に使用します。Nuget から StructureMap.MVC5 を追加した後は、他の構成は必要ありません。それだけで機能します。ただし、ASP.NET Identity は、IMyClass と MyClass のこの規則に従っていません。

構造マップが必要なインスタンスに解決できないため、この例外が表示されます。

回避策は、StructureMap.MVC5 に要求して、以下のようにアカウント コントローラーに StructureMap の DefaultContructor 属性を追加して、デフォルト コンストラクターを使用してください。

public class AccountController : Controller
{
    private ApplicationSignInManager _signInManager;
    private ApplicationUserManager _userManager;

    [DefaultConstructor]  //This is the attribute you need to add on the constructor
    public AccountController()
    {
    }
   // Other implementations here..........

}

于 2015-01-14T22:53:17.370 に答える
2

タイプは次のように無視できます。

public class AuthenticationRegistry : Registry
{
    public AuthenticationRegistry()
    {
        this.Scan(scan =>
        {
            scan.TheCallingAssembly();
            scan.WithDefaultConventions();
            scan.ExcludeType<IdentityUser>();
        });
    }
}
于 2014-12-22T22:37:58.897 に答える