diff --git a/src/Microsoft.AspNetCore.SystemWebAdapters.Abstractions/SessionState/Serialization/JsonSessionSerializerOptions.cs b/src/Microsoft.AspNetCore.SystemWebAdapters.Abstractions/SessionState/Serialization/JsonSessionSerializerOptions.cs index 9c08ce040..304072561 100644 --- a/src/Microsoft.AspNetCore.SystemWebAdapters.Abstractions/SessionState/Serialization/JsonSessionSerializerOptions.cs +++ b/src/Microsoft.AspNetCore.SystemWebAdapters.Abstractions/SessionState/Serialization/JsonSessionSerializerOptions.cs @@ -42,5 +42,5 @@ public IEqualityComparer KeyComparer /// /// /// - public void RegisterKey(string key) => KnownKeys.Add(key, typeof(T)); + public void RegisterKey(string key) => KnownKeys[key] = typeof(T); } diff --git a/test/Microsoft.AspNetCore.SystemWebAdapters.CoreServices.Tests/SessionState/Serialization/JsonSessionKeySerializerTests.cs b/test/Microsoft.AspNetCore.SystemWebAdapters.CoreServices.Tests/SessionState/Serialization/JsonSessionKeySerializerTests.cs index b955effe5..d89afceda 100644 --- a/test/Microsoft.AspNetCore.SystemWebAdapters.CoreServices.Tests/SessionState/Serialization/JsonSessionKeySerializerTests.cs +++ b/test/Microsoft.AspNetCore.SystemWebAdapters.CoreServices.Tests/SessionState/Serialization/JsonSessionKeySerializerTests.cs @@ -358,6 +358,37 @@ public void ChangeSessionKeysComparer() Assert.True(result2); } + [Fact] + public void RegisterKey() + { + // Arrange + var options = new JsonSessionSerializerOptions(); + + // Act + options.RegisterKey("key"); + + // Assert + var item = Assert.Single(options.KnownKeys); + Assert.Equal(typeof(int), item.Value); + Assert.Equal("key", item.Key); + } + + [Fact] + public void RegisterKeySameName() + { + // Arrange + var options = new JsonSessionSerializerOptions(); + + // Act + options.RegisterKey("key"); + options.RegisterKey("key"); + + // Assert + var item = Assert.Single(options.KnownKeys); + Assert.Equal(typeof(int), item.Value); + Assert.Equal("key", item.Key); + } + private sealed class Type1 { }