Skip to content

Method 'get_ServerSideSessions' in type 'Microsoft.AspNetCore.ApiAuthorization.IdentityServer.ApiAuthorizationDbContext`1' from assembly 'Microsoft.AspNetCore.ApiAuthorization.IdentityServer, Version=7.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60' does not have an implementation. #44990

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
1 task done
neozhu opened this issue Nov 10, 2022 · 23 comments
Labels
area-mvc Includes: MVC, Actions and Controllers, Localization, CORS, most templates External This is an issue in a component not contained in this repository. It is open for tracking purposes. feature-spa
Milestone

Comments

@neozhu
Copy link

neozhu commented Nov 10, 2022

Is there an existing issue for this?

  • I have searched the existing issues

Describe the bug

Unable to load one or more of the requested types.
Method 'get_ServerSideSessions' in type 'Microsoft.AspNetCore.ApiAuthorization.IdentityServer.ApiAuthorizationDbContext`1' from assembly 'Microsoft.AspNetCore.ApiAuthorization.IdentityServer, Version=7.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60' does not have an implementation.

at System.Reflection.RuntimeModule.GetTypes(RuntimeModule module)
at Microsoft.AspNetCore.Mvc.Controllers.ControllerFeatureProvider.PopulateFeature(IEnumerable1 parts, ControllerFeature feature) at Microsoft.AspNetCore.Mvc.ApplicationParts.ApplicationPartManager.PopulateFeature[TFeature](TFeature feature) at Microsoft.AspNetCore.Mvc.ApplicationModels.ControllerActionDescriptorProvider.GetControllerTypes() at Microsoft.AspNetCore.Mvc.ApplicationModels.ControllerActionDescriptorProvider.GetDescriptors() at Microsoft.AspNetCore.Mvc.ApplicationModels.ControllerActionDescriptorProvider.OnProvidersExecuting(ActionDescriptorProviderContext context) at Microsoft.AspNetCore.Mvc.Infrastructure.DefaultActionDescriptorCollectionProvider.UpdateCollection() at Microsoft.AspNetCore.Mvc.Infrastructure.DefaultActionDescriptorCollectionProvider.Initialize() at Microsoft.AspNetCore.Mvc.Infrastructure.DefaultActionDescriptorCollectionProvider.GetChangeToken() at Microsoft.Extensions.Primitives.ChangeToken.OnChange(Func1 changeTokenProducer, Action changeTokenConsumer)
at Microsoft.AspNetCore.Mvc.Routing.ActionEndpointDataSourceBase.Subscribe()
at Microsoft.AspNetCore.Builder.ControllerEndpointRouteBuilderExtensions.GetOrCreateDataSource(IEndpointRouteBuilder endpoints)
at Microsoft.AspNetCore.Builder.ControllerEndpointRouteBuilderExtensions.MapControllers(IEndpointRouteBuilder endpoints)
at CleanArchitecture.Blazor.Infrastructure.Extensions.ApplicationBuilderExtensions.<>c.b__0_3(IEndpointRouteBuilder endpoints) in C:\Users\zhuhua\Documents\GitHub\CleanArchitectureWithBlazorServer\src\Infrastructure\Extensions\ApplicationBuilderExtensions.cs:line 41
at Microsoft.AspNetCore.Builder.EndpointRoutingApplicationBuilderExtensions.UseEndpoints(IApplicationBuilder builder, Action`1 configure)
at CleanArchitecture.Blazor.Infrastructure.Extensions.ApplicationBuilderExtensions.UseInfrastructure(IApplicationBuilder app, IConfiguration config) in C:\Users\zhuhua\Documents\GitHub\CleanArchitectureWithBlazorServer\src\Infrastructure\Extensions\ApplicationBuilderExtensions.cs:line 39
at Program.<

$>d__0.MoveNext() in C:\Users\zhuhua\Documents\GitHub\CleanArchitectureWithBlazorServer\src\Blazor.Server.UI\Program.cs:line 55

Expected Behavior

No response

Steps To Reproduce

No response

Exceptions (if any)

No response

.NET Version

7.0

Anything else?

No response

@neozhu
Copy link
Author

neozhu commented Nov 10, 2022

image

@neozhu
Copy link
Author

neozhu commented Nov 10, 2022

The problem persists. The latest version cannot be upgraded >6.1.0

@javiercn
Copy link
Member

The problem persists. The latest version cannot be upgraded >6.1.0

It seems that there are breaking changes in the Identity Server version update, so we suggest you update instead to the latest patch version.

@javiercn javiercn added area-mvc Includes: MVC, Actions and Controllers, Localization, CORS, most templates feature-spa labels Nov 10, 2022
@neozhu
Copy link
Author

neozhu commented Nov 10, 2022

It seems that there are breaking changes in the Identity Server version update, so we suggest you update instead to the latest patch version.

which one patch version? No available version in nuget

@javiercn
Copy link
Member

@neozhu I suspect you are looking for Duende.IdentityServer... 6.0.4

@neozhu
Copy link
Author

neozhu commented Nov 10, 2022

Currently I use this version, another issue is that Microsoft.AspNetCore.IdentityServer only depends on the automapper version< 12.

@javiercn
Copy link
Member

@neozhu we do not depend directly on automapper, that must be coming from one of the IdentityServer packages.

@mkArtakMSFT mkArtakMSFT added this to the Discussions milestone Nov 10, 2022
@mkArtakMSFT mkArtakMSFT added the External This is an issue in a component not contained in this repository. It is open for tracking purposes. label Nov 10, 2022
@neozhu
Copy link
Author

neozhu commented Nov 11, 2022

@neozhu we do not depend directly on automapper, that must be coming from one of the IdentityServer packages.
yes, Its dependencies are Microsoft.AspNetCore.IdentityServer ->Duende.IdentityServer.EntityFramework -> AutoMapper >=11<12

@hi-diego
Copy link

hi-diego commented Nov 17, 2022

hello everyone, I had the same Issue, It seems like Reflection is ussed in some part on the migration creation process so I just didn't inherit from the API ApiAuthorizationDbContext class, instead I recreate it as follows:

using Duende.IdentityServer.EntityFramework.Entities;
using Duende.IdentityServer.EntityFramework.Extensions;
using Duende.IdentityServer.EntityFramework.Interfaces;
using Duende.IdentityServer.EntityFramework.Options;
using Microsoft.AspNetCore.ApiAuthorization.IdentityServer;
using Microsoft.AspNetCore.Identity;
using Microsoft.AspNetCore.Identity.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata;
using Microsoft.Extensions.Options;

namespace Identity.Data
{

    public class User : IdentityUser
    {

    }
    public class GraphIdentityDbContext : IdentityDbContext<User>, IPersistedGrantDbContext
    {
        private readonly IOptions<OperationalStoreOptions> _operationalStoreOptions;

        /// <summary>
        /// Initializes a new instance of <see cref="ApiAuthorizationDbContext{TUser}"/>.
        /// </summary>
        /// <param name="options">The <see cref="DbContextOptions"/>.</param>
        /// <param name="operationalStoreOptions">The <see cref="IOptions{OperationalStoreOptions}"/>.</param>
        public GraphIdentityDbContext(
            DbContextOptions options,
            IOptions<OperationalStoreOptions> operationalStoreOptions)
            : base(options)
        {
            _operationalStoreOptions = operationalStoreOptions;
        }
        /// <summary>
        /// Gets or sets the user sessions.
        /// </summary>
        /// <value>
        /// The keys.
        /// </value>
        public DbSet<ServerSideSession> ServerSideSessions { get; set; }

        /// <summary>
        /// Gets or sets the <see cref="DbSet{PersistedGrant}"/>.
        /// </summary>
        public DbSet<PersistedGrant> PersistedGrants { get; set; }

        /// <summary>
        /// Gets or sets the <see cref="DbSet{DeviceFlowCodes}"/>.
        /// </summary>
        public DbSet<DeviceFlowCodes> DeviceFlowCodes { get; set; }

        /// <summary>
        /// Gets or sets the <see cref="DbSet{Key}"/>.
        /// </summary>
        public DbSet<Key> Keys { get; set; }

        /// <summary>
        /// 
        /// </summary>
        /// <returns></returns>
        public Task<int> SaveChangesAsync() => base.SaveChangesAsync();

        /// <summary>
        /// Configures the schema needed for the identity framework.
        /// </summary>
        /// <param name="builder">
        /// The builder being used to construct the model for this context.
        /// </param>
        protected override void OnModelCreating(ModelBuilder builder)
        {
            base.OnModelCreating(builder);
            builder.ConfigurePersistedGrantContext(_operationalStoreOptions.Value);
        }
    }

And it works , i figured out that the property ServerSideSessions was not implemented in the API ApiAuthorizationDbContext and was required by IPersistedGrantDbContext Interface so I added it in my DbContext and It works, Is werid that If I try to inherit from ApiAuthorizationDbContext even adding the ServerSideSessions property stilll fails.

We just need to add the

public DbSet<ServerSideSession> ServerSideSessions { get; set; }

property to Microsoft.AspNetCore.ApiAuthorization.IdentityServer.ApiAuthorizationDbContext class

PR here

@hi-diego
Copy link

hi-diego commented Nov 17, 2022

I think that we are behind Duende that IPersistedGrantDbContext.ServerSideSessions property implementaion.
you can see the Package References

Identity -> Microsoft.AspNetCore.ApiAuthorization.IdentityServer 7.0.0 -> Duende.IdentityServer.EntityFramework (>= 6.0.4)

and you can see on Duende.IdentityServer.EntityFramework.Interfaces.IPersistedGrantDbContext.cs Definition that DbSet ServerSideSessions is required

@neozhu
Copy link
Author

neozhu commented Nov 17, 2022

my solution
remove this package Microsoft.AspNetCore.ApiAuthorization.IdentityServer.
change service to
services
.AddIdentity<ApplicationUser, ApplicationRole>()
.AddEntityFrameworkStores()
.AddDefaultTokenProviders();

@MichelJansson
Copy link
Contributor

Having the same issue.

My scenario (that might help others find this), and reason for not being able to stay on "latest patch" of identity server (6.0.4):

  1. Automapper 12 is "required" for .NET7 due to new APIs.
    MaxInteger[T](System.Collections.Generic.IEnumerable`1[T])' violates the constraint of type parameter 'T' exception AutoMapper/AutoMapper#3988,
    [dotnet-sdk-7.0.100-preview.5.22257.3] MaxInteger[T](System.Collections.Generic.IEnumerable`1[T])' violates the constraint of type parameter 'T' exception error runtime#69119).

  2. Identity Server < 6.2 requires AutoMapper < 12.

  3. Referencing Identity Server 6.2.0 explicitly resolves the AutoMapper issues.

  4. Then I got the exception this issue refers to due Microsoft.AspNetCore.ApiAuthorization.IdentityServer 7.0.0 not supporting IS 6.2.0, and migrations cannot be built/generated.

  5. Using @hi-diego's workaround by duplicating ApiAuthorizationDbContext with the added DbSet<ServerSideSessions> resolves the initial exception, and I can now build the new Migration.

  6. But now I'm getting same exception again this time when mapping endpoints (endpoints.MapRazorPages();).
    It looks like some reflection code is finding the original ApiAuthorizationDbContext with the older interface even though it's not used anywhere.
    Anyhow, I'm stuck.

@Alan468
Copy link

Alan468 commented Dec 7, 2022

Hi all,
I have encountered this issue after creating .Net 7 and Angular 15 project.
As my predecessors pointed out .Net 7 needs AutoMapper 12 (1), newest IndentityServer (6.2.0) also has supports .Net 7 and uses AutoMapper 12 but at the same time they added that ServerSideSessions DbSet (2) which is not present in ApiAuthorizationDbContext of Microsoft.AspNetCore.ApiAuthorization.IdentityServer 7.0.0 (3)

I have tried to lower the versions of Duende.IdentityServer to 6.0.4 which is last version without ServerSideSessions but then I have to lower version of AutoMapper to 11 and that results in error ("violates the constraint of type parameter 'T'" (1)).
So the only solution that I see is to change version of .Net to 6 and update packages accordingly.

Is there maybe some ETA on when next version will be released (or even prerelase) with fix for this issue? (3)

  1. MaxInteger[T](System.Collections.Generic.IEnumerable`1[T])' violates the constraint of type parameter 'T' exception AutoMapper/AutoMapper#3988
    [dotnet-sdk-7.0.100-preview.5.22257.3] MaxInteger[T](System.Collections.Generic.IEnumerable`1[T])' violates the constraint of type parameter 'T' exception error runtime#69119
  2. https://docs.duendesoftware.com/identityserver/v6/data/operational/sessions/
  3. ApiAuthorizationDbContext.cs missing ServerSideSessions Patch #45145

@bellash13
Copy link

Faced the same issue! Here is how I solved it:

Downgraded Automapper to version 10.1.1
Downgraded AutoMapper.Extensions.Microsoft.DependencyInjection to version 10.1.1
Used version 6.0.11 of everything inside Microsoft.* packages.
Removed identity packages newer then 6.0.11 (refering to the date of release)

Now it works.

@Alan468
Copy link

Alan468 commented Dec 13, 2022

Version 7.0.1 was just released but issue still remains.
System.AggregateException: One or more errors occurred. (Unable to load one or more of the requested types.
Method "get_ServerSideSessions" in type Microsoft.AspNetCore.ApiAuthorization.IdentityServer.ApiAuthorizationDbContext
from assembly "Microsoft.AspNetCore.ApiAuthorization.IdentityServer, Version=7.0.1.0
does not have an implementation)

Will be there some alpha/beta/preview package for this as this error blocks development with .Net 7
Downgrading packages to .Net 6 should not be considered a fix.

nuget Microsoft.AspNetCore.ApiAuthorization.IdentityServer

@MichelJansson
Copy link
Contributor

@javiercn, @mkArtakMSFT I'm not sure if you have seen the latest development of this issue after it's been marked as discussion.

This blocks upgrade to .NET7 and I do not really see a way forward without an updated version of Microsoft.AspNetCore.ApiAuthorization.IdentityServer that uses dependencies that work on .NET7 (the external parties have updated their packages some time ago).

Can we use this existing issue to track this blocked upgrade, or should I create a new issue?

@Drol
Copy link

Drol commented Jan 2, 2023

Any news about this? This is currently blocking upgrading to NET7 for us.

@Alan468
Copy link

Alan468 commented Jan 10, 2023

7.0.2 version is up... but no change.
Can we ping someone regarding this or should we create new issue?
image

@MichelJansson
Copy link
Contributor

7.0.2 version is up... but no change. Can we ping someone regarding this or should we create new issue?

@Alan468 I tried pinging the MS participants a month ago, so lets create a new issue that makes it clear this is a NET7 blocker.
I will have time earliest later tonight (CET). Lets us know it you get to it first 👍

@Alan468
Copy link

Alan468 commented Jan 11, 2023

@MichelJansson I have created new one #46025

@javiercn
Copy link
Member

Hey folks, you have an update here that includes a workaround to make it work.

The TL;DR is that this is a breaking change introduced by Identity Server in a minor release (6.1.0) that breaks our package.

Unfortunately, I do not think we can do anything out of the box since we can't make minor version upgrades during patches, and we can't make public API changes.

With that said, the provided workaround should unblock you. If not, please let us know.

@Ogglas
Copy link

Ogglas commented Jan 17, 2023

I'm getting frustrated with Duende.IdentityServer updates not being compatible. Last year I had the error below that took a few hours to investigate:

#41897

There are the known errors as well:

https://github.com/dotnet/core/blob/main/release-notes/6.0/known-issues.md#spa-template-issues-with-individual-authentication-when-running-in-production

#42072

If you agree with me that Microsoft should replace Duende.IdentityServer with Microsoft.AspNetCore.Identity or a similar library created/maintained by Microsoft you can show community involvement here:

#46131

@halter73
Copy link
Member

Microsoft.AspNetCore.ApiAuthorization.IdentityServer will no longer be supported going forward, so I'm closing this issue. We plan to stop shipping it in .NET 8, and we are going to be removing Duende's IdentityServer from our SPA templates. See #42158 (comment)

If you want to continue using IdentityServer, I recommend following the guidance laid out Duende's docs, templates and samples which do not use Microsoft.AspNetCore.ApiAuthorization.IdentityServer.

@ghost ghost locked as resolved and limited conversation to collaborators May 1, 2023
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
area-mvc Includes: MVC, Actions and Controllers, Localization, CORS, most templates External This is an issue in a component not contained in this repository. It is open for tracking purposes. feature-spa
Projects
None yet
Development

Successfully merging a pull request may close this issue.

10 participants