using System; using System.Globalization; using System.Threading; using Owin; namespace EnVisage { public static class OwinExtensions { /// /// 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 /// 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); } } }