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);
}