diff --git a/source/Consume/MessageHandlerBuilder.cs b/source/Consume/MessageHandlerBuilder.cs index a19ba07..25c811e 100644 --- a/source/Consume/MessageHandlerBuilder.cs +++ b/source/Consume/MessageHandlerBuilder.cs @@ -332,6 +332,25 @@ private void DoSubscribe(CancellationToken? cancelled = null, Func private async Task HandleMessageReceived(CancellationToken? cancelled, Message message, Func blockInterruption, IReceiverClient client) { + (bool cultureOverridden, CultureInfo defaultCulture, CultureInfo defaultUiCulture) TryOverrideCulture() + { + var cultureOverridden = false; + var defaultCulture = CultureInfo.CurrentCulture; + var defaultUiCulture = CultureInfo.CurrentUICulture; + + if (_setCulture && message.UserProperties.ContainsKey("Culture") && message.UserProperties["Culture"] != null) + { + var culture = CultureInfo.GetCultureInfo((string) message.UserProperties["Culture"]); + + CultureInfo.CurrentCulture = culture; + CultureInfo.CurrentUICulture = culture; + + cultureOverridden = true; + } + + return (cultureOverridden, defaultCulture, defaultUiCulture); + } + if (cancelled?.IsCancellationRequested == true) { await client.AbandonAsync(message.SystemProperties.LockToken); @@ -342,13 +361,10 @@ private async Task HandleMessageReceived(CancellationToken? cancelled, Message m using (blockInterruption()) { + var (cultureOverridden, defaultCulture, defaultUiCulture) = TryOverrideCulture(); + try { - if (_setCulture && message.UserProperties.ContainsKey("Culture")) - { - CultureInfo.CurrentCulture = CultureInfo.GetCultureInfo((string)message.UserProperties["Culture"]); - } - _services?.AddScoped(provider => message); if (message.UserProperties.TryGetValue("MessageType", out var messageType) && @@ -388,9 +404,10 @@ private async Task HandleMessageReceived(CancellationToken? cancelled, Message m } finally { - if (_setCulture) + if (cultureOverridden) { - CultureInfo.CurrentCulture = CultureInfo.DefaultThreadCurrentCulture; + CultureInfo.CurrentCulture = defaultCulture; + CultureInfo.CurrentUICulture = defaultUiCulture; } } } diff --git a/source/TinyDancer.csproj b/source/TinyDancer.csproj index fab238a..740242a 100644 --- a/source/TinyDancer.csproj +++ b/source/TinyDancer.csproj @@ -8,7 +8,7 @@ azure servicebus service bus message queue https://github.com/johnknoop/TinyDancer https://github.com/johnknoop/TinyDancer - 2.0.0-rc.6 + 2.0.0-rc.7