EnVisageOnline/Main/Source/EnVisage/Code/Extensions/OwinExtensions.cs

33 lines
1.1 KiB
C#

using System;
using System.Globalization;
using System.Threading;
using Owin;
namespace EnVisage
{
public static class OwinExtensions
{
/// <summary>
/// Per http://www.zpqrtbnk.net/posts/appdomains-threads-cultureinfos-and-paracetamol, a fix for SignalR init
/// See https://github.com/SignalR/SignalR/issues/3414 for additional details
/// </summary>
public static void SanitizeThreadCulture(this IAppBuilder app)
{
var currentCulture = CultureInfo.CurrentCulture;
// at the top of any culture should be the invariant culture,
// find it doing an .Equals comparison ensure that we will
// find it and not loop endlessly
var invariantCulture = currentCulture;
while (invariantCulture.Equals(CultureInfo.InvariantCulture) == false)
invariantCulture = invariantCulture.Parent;
if (ReferenceEquals(invariantCulture, CultureInfo.InvariantCulture))
return;
var thread = Thread.CurrentThread;
thread.CurrentCulture = CultureInfo.GetCultureInfo(thread.CurrentCulture.Name);
thread.CurrentUICulture = CultureInfo.GetCultureInfo(thread.CurrentUICulture.Name);
}
}
}