diff --git a/src/SignalR/clients/ts/FunctionalTests/Startup.cs b/src/SignalR/clients/ts/FunctionalTests/Startup.cs
index 30d0b1e770..a7ad5a3886 100644
--- a/src/SignalR/clients/ts/FunctionalTests/Startup.cs
+++ b/src/SignalR/clients/ts/FunctionalTests/Startup.cs
@@ -45,7 +45,7 @@ namespace FunctionalTests
{
// we are running the same tests with JSON and MsgPack protocols and having
// consistent casing makes it cleaner to verify results
- options.UseCamelCase = false;
+ options.PayloadSerializerOptions.PropertyNamingPolicy = null;
})
.AddMessagePackProtocol();
diff --git a/src/SignalR/common/Protocols.Json/ref/Microsoft.AspNetCore.SignalR.Protocols.Json.netcoreapp3.0.cs b/src/SignalR/common/Protocols.Json/ref/Microsoft.AspNetCore.SignalR.Protocols.Json.netcoreapp3.0.cs
index feda524ab2..1b48b3c31e 100644
--- a/src/SignalR/common/Protocols.Json/ref/Microsoft.AspNetCore.SignalR.Protocols.Json.netcoreapp3.0.cs
+++ b/src/SignalR/common/Protocols.Json/ref/Microsoft.AspNetCore.SignalR.Protocols.Json.netcoreapp3.0.cs
@@ -6,10 +6,7 @@ namespace Microsoft.AspNetCore.SignalR
public partial class JsonHubProtocolOptions
{
public JsonHubProtocolOptions() { }
- public bool AllowTrailingCommas { get { throw null; } set { } }
- public bool IgnoreNullValues { get { throw null; } set { } }
- public bool UseCamelCase { get { throw null; } set { } }
- public bool WriteIndented { get { throw null; } set { } }
+ public System.Text.Json.Serialization.JsonSerializerOptions PayloadSerializerOptions { [System.Runtime.CompilerServices.CompilerGeneratedAttribute]get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute]set { } }
}
}
namespace Microsoft.AspNetCore.SignalR.Protocol
diff --git a/src/SignalR/common/Protocols.Json/ref/Microsoft.AspNetCore.SignalR.Protocols.Json.netstandard2.0.cs b/src/SignalR/common/Protocols.Json/ref/Microsoft.AspNetCore.SignalR.Protocols.Json.netstandard2.0.cs
index feda524ab2..1b48b3c31e 100644
--- a/src/SignalR/common/Protocols.Json/ref/Microsoft.AspNetCore.SignalR.Protocols.Json.netstandard2.0.cs
+++ b/src/SignalR/common/Protocols.Json/ref/Microsoft.AspNetCore.SignalR.Protocols.Json.netstandard2.0.cs
@@ -6,10 +6,7 @@ namespace Microsoft.AspNetCore.SignalR
public partial class JsonHubProtocolOptions
{
public JsonHubProtocolOptions() { }
- public bool AllowTrailingCommas { get { throw null; } set { } }
- public bool IgnoreNullValues { get { throw null; } set { } }
- public bool UseCamelCase { get { throw null; } set { } }
- public bool WriteIndented { get { throw null; } set { } }
+ public System.Text.Json.Serialization.JsonSerializerOptions PayloadSerializerOptions { [System.Runtime.CompilerServices.CompilerGeneratedAttribute]get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute]set { } }
}
}
namespace Microsoft.AspNetCore.SignalR.Protocol
diff --git a/src/SignalR/common/Protocols.Json/src/JsonHubProtocolOptions.cs b/src/SignalR/common/Protocols.Json/src/JsonHubProtocolOptions.cs
index ca42ae3312..037f47f08c 100644
--- a/src/SignalR/common/Protocols.Json/src/JsonHubProtocolOptions.cs
+++ b/src/SignalR/common/Protocols.Json/src/JsonHubProtocolOptions.cs
@@ -11,30 +11,9 @@ namespace Microsoft.AspNetCore.SignalR
///
public class JsonHubProtocolOptions
{
- internal readonly JsonSerializerOptions _serializerOptions;
-
- public JsonHubProtocolOptions()
- {
- _serializerOptions = JsonHubProtocol.CreateDefaultSerializerSettings();
- }
-
- public bool IgnoreNullValues { get => _serializerOptions.IgnoreNullValues; set => _serializerOptions.IgnoreNullValues = value; }
- public bool WriteIndented { get => _serializerOptions.WriteIndented; set => _serializerOptions.WriteIndented = value; }
- public bool AllowTrailingCommas { get => _serializerOptions.AllowTrailingCommas; set => _serializerOptions.AllowTrailingCommas = value; }
- public bool UseCamelCase
- {
- get => _serializerOptions.PropertyNamingPolicy == JsonNamingPolicy.CamelCase;
- set
- {
- if (value)
- {
- _serializerOptions.PropertyNamingPolicy = JsonNamingPolicy.CamelCase;
- }
- else
- {
- _serializerOptions.PropertyNamingPolicy = null;
- }
- }
- }
+ ///
+ /// Gets or sets the settings used to serialize invocation arguments and return values.
+ ///
+ public JsonSerializerOptions PayloadSerializerOptions { get; set; } = JsonHubProtocol.CreateDefaultSerializerSettings();
}
}
diff --git a/src/SignalR/common/Protocols.Json/src/Protocol/JsonHubProtocol.cs b/src/SignalR/common/Protocols.Json/src/Protocol/JsonHubProtocol.cs
index 1e30e252d8..e244479ecf 100644
--- a/src/SignalR/common/Protocols.Json/src/Protocol/JsonHubProtocol.cs
+++ b/src/SignalR/common/Protocols.Json/src/Protocol/JsonHubProtocol.cs
@@ -61,7 +61,7 @@ namespace Microsoft.AspNetCore.SignalR.Protocol
/// The options used to initialize the protocol.
public JsonHubProtocol(IOptions options)
{
- _payloadSerializerOptions = options.Value._serializerOptions;
+ _payloadSerializerOptions = options.Value.PayloadSerializerOptions;
}
///
diff --git a/src/SignalR/common/SignalR.Common/test/Internal/Protocol/JsonHubProtocolTests.cs b/src/SignalR/common/SignalR.Common/test/Internal/Protocol/JsonHubProtocolTests.cs
index a1a5d284fe..5ef05d6e4e 100644
--- a/src/SignalR/common/SignalR.Common/test/Internal/Protocol/JsonHubProtocolTests.cs
+++ b/src/SignalR/common/SignalR.Common/test/Internal/Protocol/JsonHubProtocolTests.cs
@@ -7,6 +7,7 @@ using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
+using System.Text.Json.Serialization;
using Microsoft.AspNetCore.Internal;
using Microsoft.AspNetCore.SignalR.Protocol;
using Microsoft.Extensions.Options;
@@ -24,8 +25,11 @@ namespace Microsoft.AspNetCore.SignalR.Common.Tests.Internal.Protocol
{
var protocolOptions = new JsonHubProtocolOptions()
{
- IgnoreNullValues = ignoreNullValues,
- UseCamelCase = useCamelCase,
+ PayloadSerializerOptions = new JsonSerializerOptions()
+ {
+ IgnoreNullValues = ignoreNullValues,
+ PropertyNamingPolicy = useCamelCase ? JsonNamingPolicy.CamelCase : null
+ }
};
return new JsonHubProtocol(Options.Create(protocolOptions));