结构映射方法,scan.WithDefaultConventions(); 在 structuremap.MVC 5 中假设约定 IMyClassName , MyClassName 用于依赖注入。如果您只有自己创建的类,这没关系。
使用开箱即用的 ASP.NET MVC 5 应用程序,约定 IMyClassName , MyClassName 不会以用户身份退出。如何配置结构映射以忽略 ASP.NET Framework 接口/类?
结构映射方法,scan.WithDefaultConventions(); 在 structuremap.MVC 5 中假设约定 IMyClassName , MyClassName 用于依赖注入。如果您只有自己创建的类,这没关系。
使用开箱即用的 ASP.NET MVC 5 应用程序,约定 IMyClassName , MyClassName 不会以用户身份退出。如何配置结构映射以忽略 ASP.NET Framework 接口/类?
StructureMap.MVC5 自动使用约定 IMyClass 和 MyClass 到 DI 分辨率。从 Nuget 添加 StructureMap.MVC5 后无需其他配置。它只是工作。但是 ASP.NET Identity 不遵循 IMyClass 和 MyClass 的约定。
您将看到此异常“”没有注册默认实例,并且无法自动确定类型“IUserstore”,因为结构映射无法解析为需要实例
一种解决方法是请求 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..........
}
可以像这样忽略类型:
public class AuthenticationRegistry : Registry
{
public AuthenticationRegistry()
{
this.Scan(scan =>
{
scan.TheCallingAssembly();
scan.WithDefaultConventions();
scan.ExcludeType<IdentityUser>();
});
}
}