将IDbSet添加到ApplicationDbContext

时间:2016-11-29 09:24:19

标签: asp.net-mvc entity-framework asp.net-web-api2 asp.net-identity

这是我的ApplicationDbContext类

public class ApplicationDbContext
   : IdentityDbContext<ApplicationUser, ApplicationRole,
   string, ApplicationUserLogin, ApplicationUserRole, ApplicationUserClaim>
{
    public ApplicationDbContext()
        : base("DefaultConnection")
    {
    }

    static ApplicationDbContext()
    {
    }

    public static ApplicationDbContext Create()
    {
        return new ApplicationDbContext();
    }
    public virtual IDbSet<ApplicationGroup> ApplicationGroups { get; set; }
}

当我尝试运行并登录我的应用程序浏览器时显示此错误

{"error":"unsupported_grant_type"}

我可以通过将public virtual IDbSet<ApplicationGroup> ApplicationGroups { get; set; }替换为public virtual ICollection<ApplicationGroup> ApplicationGroups { get; set; }来登录应用程序,但问题出在我这样做之后我无法在this.GroupManager.CreateGroupAsync(app);之类的内置应用程序组管理器方法中使用,任何人都可以帮助我此

这是我的startup.Auth类

public partial class Startup
{
    public static OAuthAuthorizationServerOptions OAuthOptions { get; private set; }
    public static string PublicClientId { get; private set; }
    public void ConfigureAuth(IAppBuilder app)
    {
        app.CreatePerOwinContext(ApplicationDbContext.Create);
        app.CreatePerOwinContext<ApplicationUserManager>(ApplicationUserManager.Create);
        app.CreatePerOwinContext<ApplicationRoleManager>(ApplicationRoleManager.Create);
        app.CreatePerOwinContext<ApplicationSignInManager>(ApplicationSignInManager.Create);
        app.UseCookieAuthentication(new CookieAuthenticationOptions());
        app.UseCookieAuthentication(new CookieAuthenticationOptions
        {
            AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
            LoginPath = new PathString("/"),
            ExpireTimeSpan = TimeSpan.FromHours(10),
            Provider = new CookieAuthenticationProvider
            { 
                OnValidateIdentity = SecurityStampValidator.OnValidateIdentity<ApplicationUserManager, ApplicationUser>(
        validateInterval: TimeSpan.FromDays(1),
        regenerateIdentity: (manager, user) => user.GenerateUserIdentityAsync(manager))
            }
        });
        app.UseExternalSignInCookie(DefaultAuthenticationTypes.ExternalCookie);
        app.UseTwoFactorSignInCookie(DefaultAuthenticationTypes.TwoFactorCookie, TimeSpan.FromHours(5));
        app.UseTwoFactorRememberBrowserCookie(DefaultAuthenticationTypes.TwoFactorRememberBrowserCookie);

        PublicClientId = "self";
        OAuthOptions = new OAuthAuthorizationServerOptions
        {
            TokenEndpointPath = new PathString("/Token"),
            Provider = new ApplicationOAuthProvider(PublicClientId),
            AuthorizeEndpointPath = new PathString("/api/Account/ExternalLogin"),
            AccessTokenExpireTimeSpan = TimeSpan.FromHours(10),
            AllowInsecureHttp = true
        };
        app.UseOAuthBearerTokens(OAuthOptions);
    }
}

0 个答案:

没有答案