[CSHARP-2667] MongoDB.Bson.BsonSerializationException: Element name '*' is not valid'. Created: 13/Jul/19  Updated: 16/Sep/19  Resolved: 16/Sep/19

Status: Closed
Project: C# Driver
Component/s: None
Affects Version/s: 2.8.1, 2.9.0
Fix Version/s: None

Type: Bug Priority: Major - P3
Reporter: john gray Assignee: Vincent Kam (Inactive)
Resolution: Done Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified
Environment:

Windows 10, C# 2.2



 Description   

When building my current project for the first few attempts it worked perfectly. Now its saying MongoDB.Bson.BsonSerializationException: Element name 'UserClaims' is not valid'.

Im storing a list of Claim(the default security claims provided by c#) heres the code:

public List<Claim> UserClaims { get; set; {color:#89ddff}} = new List<Claim>();

 

BsonClassMap.RegisterClassMap<Claim>(cm =>
{ cm.SetIgnoreExtraElements(true); cm.MapMember(c => c.Issuer); cm.MapMember(c => c.OriginalIssuer); cm.MapMember(c => c.Properties); cm.MapMember(c => c.Subject); cm.MapMember(c => c.Type); cm.MapMember(c => c.Value); cm.MapMember(c => c.ValueType); cm.MapCreator(c => new Claim(c.Type, c.Value, c.ValueType, c.Issuer, c.OriginalIssuer, c.Subject));{color:#89ddff}});

 
I am registering a class map to deal with claims which i though would deal with it, it does but after a restart or so it stops working again. for example i switched from using List to using Array and it worked for a launch or two and then throw the error again. Any recomendations on how to deal with this? i can provide more code if required

 



 Comments   
Comment by Vincent Kam (Inactive) [ 28/Aug/19 ]

Hi j.gray26@hotmail.com,

Thank you for filing a JIRA ticket. I attempted to reproduce your issue by running the code you provided and executing an InsertOne, FindSync, and UpdateOne with an object that contains a list of Claims but was unable to do so. Would you be able to provide additional code so that I can try to reproduce the exception so we can discover the root cause of the issue you are seeing? Additionally, what exception are you seeing when you run your code: is it MongoDB.Bson.BsonSerializationException: Element name 'UserClaims' is not valid'. as noted in the ticket description and the stack trace, or MongoDB.Bson.BsonSerializationException: Element name '*' is not valid'. as noted in the ticket title?

Thank you for your time!
Kind regards,
Vincent

Comment by john gray [ 13/Jul/19 ]

Heres the stacktrace

BsonSerializationException: Element name 'UserClaims' is not valid'.

  • MongoDB.Bson.IO.BsonWriter.WriteName(string name)

  • MongoDB.Bson.Serialization.BsonClassMapSerializer<TClass>.SerializeNormalMember(BsonSerializationContext context, object obj, BsonMemberMap memberMap)

  • MongoDB.Bson.Serialization.BsonClassMapSerializer<TClass>.SerializeClass(BsonSerializationContext context, BsonSerializationArgs args, TClass document)

  • MongoDB.Bson.Serialization.BsonClassMapSerializer<TClass>.Serialize(BsonSerializationContext context, BsonSerializationArgs args, TClass value)

  • MongoDB.Bson.Serialization.Serializers.SerializerBase<TValue>.MongoDB.Bson.Serialization.IBsonSerializer.Serialize(BsonSerializationContext context, BsonSerializationArgs args, object value)

  • MongoDB.Bson.Serialization.IBsonSerializerExtensions.Serialize(IBsonSerializer serializer, BsonSerializationContext context, object value)

  • MongoDB.Bson.Serialization.Serializers.BsonValueSerializerBase<TBsonValue>.Serialize(BsonSerializationContext context, BsonSerializationArgs args, TBsonValue value)

  • MongoDB.Bson.Serialization.Serializers.SerializerBase<TValue>.MongoDB.Bson.Serialization.IBsonSerializer.Serialize(BsonSerializationContext context, BsonSerializationArgs args, object value)

  • MongoDB.Bson.Serialization.IBsonSerializerExtensions.Serialize(IBsonSerializer serializer, BsonSerializationContext context, object value)

  • MongoDB.Bson.Serialization.Serializers.BsonValueSerializerBase<TBsonValue>.Serialize(BsonSerializationContext context, BsonSerializationArgs args, TBsonValue value)

  • MongoDB.Bson.Serialization.IBsonSerializerExtensions.Serialize<TValue>(IBsonSerializer<TValue> serializer, BsonSerializationContext context, TValue value)

  • MongoDB.Driver.Core.Operations.RetryableUpdateCommandOperation+UpdateRequestSerializer.SerializeUpdate(BsonSerializationContext context, BsonSerializationArgs args, UpdateRequest request)

  • MongoDB.Driver.Core.Operations.RetryableUpdateCommandOperation+UpdateRequestSerializer.SerializeValue(BsonSerializationContext context, BsonSerializationArgs args, UpdateRequest value)

  • MongoDB.Bson.Serialization.Serializers.SealedClassSerializerBase<TValue>.Serialize(BsonSerializationContext context, BsonSerializationArgs args, TValue value)

  • MongoDB.Bson.Serialization.Serializers.SerializerBase<TValue>.MongoDB.Bson.Serialization.IBsonSerializer.Serialize(BsonSerializationContext context, BsonSerializationArgs args, object value)

  • MongoDB.Driver.Core.WireProtocol.Messages.Encoders.BinaryEncoders.CommandMessageBinaryEncoder.WriteType1Section(BsonBinaryWriter writer, Type1CommandMessageSection section, long messageStartPosition)

  • MongoDB.Driver.Core.WireProtocol.Messages.Encoders.BinaryEncoders.CommandMessageBinaryEncoder.WriteSections(BsonBinaryWriter writer, IEnumerable<CommandMessageSection> sections, long messageStartPosition)

  • MongoDB.Driver.Core.WireProtocol.Messages.Encoders.BinaryEncoders.CommandMessageBinaryEncoder.WriteMessage(CommandMessage message)

  • MongoDB.Driver.Core.Connections.BinaryConnection+SendMessagesHelper.EncodeMessages(CancellationToken cancellationToken, out List<RequestMessage> sentMessages)

  • MongoDB.Driver.Core.Connections.BinaryConnection.SendMessagesAsync(IEnumerable<RequestMessage> messages, MessageEncoderSettings messageEncoderSettings, CancellationToken cancellationToken)

  • MongoDB.Driver.Core.WireProtocol.CommandUsingCommandMessageWireProtocol<TCommandResult>.ExecuteAsync(IConnection connection, CancellationToken cancellationToken)

  • MongoDB.Driver.Core.Servers.Server+ServerChannel.ExecuteProtocolAsync<TResult>(IWireProtocol<TResult> protocol, CancellationToken cancellationToken)

  • MongoDB.Driver.Core.Operations.RetryableWriteOperationExecutor.ExecuteAsync<TResult>(IRetryableWriteOperation<TResult> operation, RetryableWriteContext context, CancellationToken cancellationToken)

  • MongoDB.Driver.Core.Operations.BulkUnmixedWriteOperationBase<TWriteRequest>.ExecuteBatchAsync(RetryableWriteContext context, Batch batch, CancellationToken cancellationToken)

  • MongoDB.Driver.Core.Operations.BulkUnmixedWriteOperationBase<TWriteRequest>.ExecuteBatchesAsync(RetryableWriteContext context, CancellationToken cancellationToken)

  • MongoDB.Driver.Core.Operations.BulkMixedWriteOperation.ExecuteBatchAsync(RetryableWriteContext context, Batch batch, CancellationToken cancellationToken)

  • MongoDB.Driver.Core.Operations.BulkMixedWriteOperation.ExecuteAsync(IWriteBinding binding, CancellationToken cancellationToken)

  • MongoDB.Driver.OperationExecutor.ExecuteWriteOperationAsync<TResult>(IWriteBinding binding, IWriteOperation<TResult> operation, CancellationToken cancellationToken)

  • MongoDB.Driver.MongoCollectionImpl<TDocument>.ExecuteWriteOperationAsync<TResult>(IClientSessionHandle session, IWriteOperation<TResult> operation, CancellationToken cancellationToken)

  • MongoDB.Driver.MongoCollectionImpl<TDocument>.BulkWriteAsync(IClientSessionHandle session, IEnumerable<WriteModel<TDocument>> requests, BulkWriteOptions options, CancellationToken cancellationToken)

  • MongoDB.Driver.MongoCollectionImpl<TDocument>.UsingImplicitSessionAsync<TResult>(Func<IClientSessionHandle, Task<TResult>> funcAsync, CancellationToken cancellationToken)

  • MongoDB.Driver.MongoCollectionBase<TDocument>.UpdateOneAsync(FilterDefinition<TDocument> filter, UpdateDefinition<TDocument> update, UpdateOptions options, Func<IEnumerable<WriteModel<TDocument>>, BulkWriteOptions, Task<BulkWriteResult<TDocument>>> bulkWriteAsync)

  • AdvehoAuth.Stores.AdvehoUserStore.UpdateAsync(AdvehoUser user, CancellationToken cancellationToken) in AdvehoUserStore.cs

  1. await _userRepository.UpdateAsync(it => it.Id == user.Id, user);
  • Microsoft.AspNetCore.Identity.UserManager<TUser>.UpdateUserAsync(TUser user)

  • Microsoft.AspNetCore.Identity.UserManager<TUser>.AddToRoleAsync(TUser user, string role)

  • AdvehoAuth.Controllers.ClaimsController.Admin() in ClaimsController.cs

  1. var res = await _userManager.AddToRoleAsync(users, "Admin");
  • Microsoft.AspNetCore.Mvc.Internal.ActionMethodExecutor+TaskOfIActionResultExecutor.Execute(IActionResultTypeMapper mapper, ObjectMethodExecutor executor, object controller, object[] arguments)

  • System.Threading.Tasks.ValueTask<TResult>.get_Result()

  • Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.InvokeActionMethodAsync()

  • Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.InvokeNextActionFilterAsync()

  • Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.Rethrow(ActionExecutedContext context)

  • Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.Next(ref State next, ref Scope scope, ref object state, ref bool isCompleted)

  • Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.InvokeInnerFilterAsync()

  • Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.InvokeNextResourceFilter()

  • Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.Rethrow(ResourceExecutedContext context)

  • Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.Next(ref State next, ref Scope scope, ref object state, ref bool isCompleted)

  • Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.InvokeFilterPipelineAsync()

  • Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.InvokeAsync()

  • Microsoft.AspNetCore.Routing.EndpointMiddleware.Invoke(HttpContext httpContext)

  • Microsoft.AspNetCore.Routing.EndpointRoutingMiddleware.Invoke(HttpContext httpContext)

  • IdentityServer4.Hosting.IdentityServerMiddleware.Invoke(HttpContext context, IEndpointRouter router, IUserSession session, IEventService events) in IdentityServerMiddleware.cs

  • IdentityServer4.Hosting.MutualTlsTokenEndpointMiddleware.Invoke(HttpContext context, IAuthenticationSchemeProvider schemes) in MtlsTokenEndpointMiddleware.cs

  • Microsoft.AspNetCore.Authentication.AuthenticationMiddleware.Invoke(HttpContext context)

  • IdentityServer4.Hosting.BaseUrlMiddleware.Invoke(HttpContext context) in BaseUrlMiddleware.cs

  • Microsoft.AspNetCore.StaticFiles.StaticFileMiddleware.Invoke(HttpContext context)

  • Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore.MigrationsEndPointMiddleware.Invoke(HttpContext context)

  • Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore.DatabaseErrorPageMiddleware.Invoke(HttpContext httpContext)

  • Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore.DatabaseErrorPageMiddleware.Invoke(HttpContext httpContext)

  • Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware.Invoke(HttpContext context)

Generated at Wed Feb 07 21:43:11 UTC 2024 using Jira 9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66.