Mongodb.driver.linq.expressionNotsUpportedException: выражение не поддерживается: i.toclaim ()C#

Место общения программистов C#
Ответить
Anonymous
 Mongodb.driver.linq.expressionNotsUpportedException: выражение не поддерживается: i.toclaim ()

Сообщение Anonymous »

Когда я пытаюсь зарегистрировать пользователя, использующего mongodb ef-core, я получаю ошибку, говоря, что он не может переводить .toclaim () ниже приведен мой код < /p>
public class AdditionalClaims : UserClaimsPrincipalFactory
{
private readonly ApplicationDbContext _dbContext; // this is mongo-efcore-provider

public AdditionalClaims(
UserManager userManager,
IOptions optionsAccessor,
ApplicationDbContext dbContext)
: base(userManager, optionsAccessor)
{
_dbContext = dbContext;
}

public override async Task CreateAsync(User user)
{
var principal = await base.CreateAsync(user); // error happens here

if (principal.Identity is ClaimsIdentity claimsIdentity)
{
claimsIdentity.AddClaim(
new Claim("UserId", user.Id ?? string.Empty));

if (!string.IsNullOrEmpty(user.ImageHash)) // adding the profile picture in the claims
{
claimsIdentity.AddClaim(
new Claim("ImageHash", user.ImageHash));
}
}

return principal;
}
< /code>
Я использую шаблон аутентификации по умолчанию, который я использую с помощью Visual Studio, моя цель - добавить хэш изображения профиля пользователя в претензиях, чтобы нам не понадобились дополнительные хиты базы данных, когда я хочу Покажите изображение профиля < /p>
ниже всего исключения < /p>
MongoDB.Driver.Linq.ExpressionNotSupportedException: Expression not supported: i.ToClaim().
at MongoDB.Driver.Linq.Linq3Implementation.Translators.ExpressionToAggregationExpressionTranslators.MethodCallExpressionToAggregationExpressionTranslator.Translate(TranslationContext context, MethodCallExpression expression)
at MongoDB.Driver.Linq.Linq3Implementation.Translators.ExpressionToAggregationExpressionTranslators.ExpressionToAggregationExpressionTranslator.Translate(TranslationContext context, Expression expression)
at MongoDB.Driver.Linq.Linq3Implementation.Translators.ExpressionToAggregationExpressionTranslators.ExpressionToAggregationExpressionTranslator.TranslateLambdaBody(TranslationContext context, LambdaExpression lambdaExpression, Symbol parameterSymbol)
at MongoDB.Driver.Linq.Linq3Implementation.Translators.ExpressionToAggregationExpressionTranslators.ExpressionToAggregationExpressionTranslator.TranslateLambdaBody(TranslationContext context, LambdaExpression lambdaExpression, IBsonSerializer parameterSerializer, Boolean asRoot)
at MongoDB.Driver.Linq.Linq3Implementation.Translators.ExpressionToPipelineTranslators.SelectMethodToPipelineTranslator.Translate(TranslationContext context, MethodCallExpression expression)
at MongoDB.Driver.Linq.Linq3Implementation.Translators.ExpressionToPipelineTranslators.ExpressionToPipelineTranslator.Translate(TranslationContext context, Expression expression)
at MongoDB.Driver.Linq.Linq3Implementation.Translators.ExpressionToExecutableQueryTranslators.ExpressionToExecutableQueryTranslator.Translate[TDocument,TOutput](MongoQueryProvider`1 provider, Expression expression, ExpressionTranslationOptions translationOptions)
at MongoDB.Driver.Linq.Linq3Implementation.MongoQuery`2.Execute()
at MongoDB.Driver.Linq.Linq3Implementation.MongoQuery`2.GetEnumerator()
at MongoDB.EntityFrameworkCore.Query.QueryingEnumerable`2.Enumerator.MoveNextHelper()
at MongoDB.EntityFrameworkCore.Query.QueryingEnumerable`2.Enumerator.MoveNextAsync()
at System.Runtime.CompilerServices.ConfiguredCancelableAsyncEnumerable`1.Enumerator.MoveNextAsync()
at Microsoft.EntityFrameworkCore.EntityFrameworkQueryableExtensions.ToListAsync[TSource](IQueryable`1 source, CancellationToken cancellationToken)
at Microsoft.EntityFrameworkCore.EntityFrameworkQueryableExtensions.ToListAsync[TSource](IQueryable`1 source, CancellationToken cancellationToken)
at Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserOnlyStore`6.GetClaimsAsync(TUser user, CancellationToken cancellationToken)
at Microsoft.AspNetCore.Identity.UserManager`1.GetClaimsAsync(TUser user)
at Microsoft.AspNetCore.Identity.UserClaimsPrincipalFactory`1.GenerateClaimsAsync(TUser user)
at Microsoft.AspNetCore.Identity.UserClaimsPrincipalFactory`1.CreateAsync(TUser user)
at bankin.Data.AdditionalClaims.CreateAsync(User user) in E:\Work\bank-app\Data\AdditionalClaims.cs:line 25


Подробнее здесь: https://stackoverflow.com/questions/794 ... upported-i
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»