From 6c9a885c767b7daa9b4c895d0597d0d0fd9108f0 Mon Sep 17 00:00:00 2001 From: Naiyuan Tian Date: Fri, 14 Aug 2026 08:35:01 -0700 Subject: [PATCH] initial commit --- .../AllowedTypesSerializationBinderTests.cs | 4 ++-- .../FabricOrchestrationProviderSettings.cs | 10 ++++++++-- src/DurableTask.AzureServiceFabric/Service/Startup.cs | 7 ++----- 3 files changed, 12 insertions(+), 9 deletions(-) diff --git a/Test/DurableTask.AzureServiceFabric.Tests/AllowedTypesSerializationBinderTests.cs b/Test/DurableTask.AzureServiceFabric.Tests/AllowedTypesSerializationBinderTests.cs index 8e6f58822..835a1bc3a 100644 --- a/Test/DurableTask.AzureServiceFabric.Tests/AllowedTypesSerializationBinderTests.cs +++ b/Test/DurableTask.AzureServiceFabric.Tests/AllowedTypesSerializationBinderTests.cs @@ -223,11 +223,11 @@ public void Settings_DefaultBinderIsAllowedTypes() } [TestMethod] - public void Settings_BinderCanBeSetToNull() + public void Settings_NullBinderRestoresAllowedTypesBinder() { var providerSettings = new FabricOrchestrationProviderSettings(); providerSettings.JsonSerializationBinder = null; - Assert.IsNull(providerSettings.JsonSerializationBinder); + Assert.IsInstanceOfType(providerSettings.JsonSerializationBinder, typeof(AllowedTypesSerializationBinder)); } [TestMethod] diff --git a/src/DurableTask.AzureServiceFabric/FabricOrchestrationProviderSettings.cs b/src/DurableTask.AzureServiceFabric/FabricOrchestrationProviderSettings.cs index 41a78bf91..1e7ce3121 100644 --- a/src/DurableTask.AzureServiceFabric/FabricOrchestrationProviderSettings.cs +++ b/src/DurableTask.AzureServiceFabric/FabricOrchestrationProviderSettings.cs @@ -26,6 +26,8 @@ namespace DurableTask.AzureServiceFabric /// public sealed class FabricOrchestrationProviderSettings { + ISerializationBinder jsonSerializationBinder = new AllowedTypesSerializationBinder(); + /// /// Constructor. Initializes all settings to their default values. /// @@ -66,9 +68,13 @@ public FabricOrchestrationProviderSettings() /// /// Defaults to , which permits only known /// DurableTask and core system types. Set a custom to - /// override, or set to null to disable type restrictions (not recommended). + /// override. Setting this property to null restores the default binder. /// /// - public ISerializationBinder JsonSerializationBinder { get; set; } = new AllowedTypesSerializationBinder(); + public ISerializationBinder JsonSerializationBinder + { + get => this.jsonSerializationBinder; + set => this.jsonSerializationBinder = value ?? new AllowedTypesSerializationBinder(); + } } } diff --git a/src/DurableTask.AzureServiceFabric/Service/Startup.cs b/src/DurableTask.AzureServiceFabric/Service/Startup.cs index ce676d523..6cf283ebe 100644 --- a/src/DurableTask.AzureServiceFabric/Service/Startup.cs +++ b/src/DurableTask.AzureServiceFabric/Service/Startup.cs @@ -34,7 +34,7 @@ public Startup(string listeningAddress, FabricOrchestrationProvider fabricOrches { this.listeningAddress = listeningAddress ?? throw new ArgumentNullException(nameof(listeningAddress)); this.fabricOrchestrationProvider = fabricOrchestrationProvider ?? throw new ArgumentNullException(nameof(fabricOrchestrationProvider)); - this.serializationBinder = serializationBinder; + this.serializationBinder = serializationBinder ?? new AllowedTypesSerializationBinder(); } public string GetListeningAddress() @@ -64,10 +64,7 @@ void IOwinAppBuilder.Startup(IAppBuilder appBuilder) config.Formatters.Remove(config.Formatters.XmlFormatter); config.Formatters.Remove(config.Formatters.FormUrlEncodedFormatter); config.Formatters.JsonFormatter.SerializerSettings.TypeNameHandling = Newtonsoft.Json.TypeNameHandling.All; - if (this.serializationBinder != null) - { - config.Formatters.JsonFormatter.SerializerSettings.SerializationBinder = this.serializationBinder; - } + config.Formatters.JsonFormatter.SerializerSettings.SerializationBinder = this.serializationBinder; appBuilder.UseWebApi(config); }