无法从 'method group' 转换为 asp mvc 身份中的 'Func<ApplicationRoleManager>
cannot convert from 'method group' to 'Func<ApplicationRoleManager> in asp mvc identity
此代码用于在数据库中创建角色。
身份配置:
public class ApplicationRoleManager : RoleManager<IdentityRole>
{
public ApplicationRoleManager(RoleStore<IdentityRole> roleStore)
: base(roleStore)
{
}
public static ApplicationRoleManager Create(IOwinContext context)
{
var roleStore = new RoleStore<IdentityRole>(context.Get<ApplicationDbContext>());
return new ApplicationRoleManager(roleStore);
}
}
但在 Startup.Auth 中显示错误:
如何解决这个错误?
编辑
public void Configuration(IAppBuilder app)
{
ConfigureAuth(app);
}
CreatePerOwingContext<T>
的签名如下所示:
public static IAppBuilder CreatePerOwinContext<T>(this IAppBuilder app, Func<IdentityFactoryOptions<T>, IOwinContext, T> createCallback) where T : class, IDisposable
或者像这样:
public static IAppBuilder CreatePerOwinContext<T>(this IAppBuilder app, Func<T> createCallback) where T : class, IDisposable
即你以太需要提供一个函数来为你创建一个对象,即
app.CreatePerOwinContext<ApplicationRoleManager>(() => new ApplicationRoleManager(/*blah params*/));
这将使用第二个覆盖。或返回默认值:
public static ApplicationRoleManager Create(IdentityFactoryOptions<ApplicationRoleManager> options, IOwinContext context)
{
var applicationDbContext = context.Get<ApplicationDbContext>();
var roleStore = new RoleStore<IdentityRole>(applicationDbContext);
var manager = new ApplicationRoleManager(roleStore);
return manager;
}
此代码用于在数据库中创建角色。
身份配置:
public class ApplicationRoleManager : RoleManager<IdentityRole>
{
public ApplicationRoleManager(RoleStore<IdentityRole> roleStore)
: base(roleStore)
{
}
public static ApplicationRoleManager Create(IOwinContext context)
{
var roleStore = new RoleStore<IdentityRole>(context.Get<ApplicationDbContext>());
return new ApplicationRoleManager(roleStore);
}
}
但在 Startup.Auth 中显示错误:
如何解决这个错误?
编辑
public void Configuration(IAppBuilder app)
{
ConfigureAuth(app);
}
CreatePerOwingContext<T>
的签名如下所示:
public static IAppBuilder CreatePerOwinContext<T>(this IAppBuilder app, Func<IdentityFactoryOptions<T>, IOwinContext, T> createCallback) where T : class, IDisposable
或者像这样:
public static IAppBuilder CreatePerOwinContext<T>(this IAppBuilder app, Func<T> createCallback) where T : class, IDisposable
即你以太需要提供一个函数来为你创建一个对象,即
app.CreatePerOwinContext<ApplicationRoleManager>(() => new ApplicationRoleManager(/*blah params*/));
这将使用第二个覆盖。或返回默认值:
public static ApplicationRoleManager Create(IdentityFactoryOptions<ApplicationRoleManager> options, IOwinContext context)
{
var applicationDbContext = context.Get<ApplicationDbContext>();
var roleStore = new RoleStore<IdentityRole>(applicationDbContext);
var manager = new ApplicationRoleManager(roleStore);
return manager;
}