33 lines
1.1 KiB
C#
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);
|
|
}
|
|
}
|
|
} |