ASP.NET Middleware erhalten keine Kultur mehr
asp.net 4 mit mvc 5.2.3 und .net Gegeben 4.6.1
Ich möchte auf einige die Current Unterstützung Globalisierung ändern basierend Anfrage ähnliche Dinge wie der Gastgeber.
Eine Owin-Middleware, die eine Kultur setzt.
vereinfachte Version, die das Verhalten erzeugt:
public override async Task Invoke(IOwinContext context)
{
var culture = new CultureInfo("es-ES");
Thread.CurrentThread.CurrentCulture = culture;
Thread.CurrentThread.CurrentUICulture = culture;
CultureInfo.CurrentCulture = culture;
CultureInfo.CurrentUICulture = culture;
await Next.Invoke(context);
}
Problem:
Die Kultur wird nicht beibehalten So zum Beispiel eines Web-Controler nicht die Kultur haben, die in der Middleware gesetzt wurde .
Dies scheint nicht mit dem Thema Thread Culturpreserve Problem verbunden sein. Wie wenn man nur einige Methoden nennt und auf sie wartet, bleibt die Kultur erhalten.
Obwohl mit 4.5.1 funktioniert es. (Ich habe es bereits auf diese Weise auch in anderen Projekten) Und wenn ich die Httpruntime-Version wie folgt zu ändern:
<httpRuntime targetFramework="4.5.1" />
alles wirkt wie ein Zauber.
Ich kann keine dokumentierte Bruchänderung dafür finden. irgendein Hinweis? Ich kann es mit einem leeren neuen ASP-Projekt reproduzieren Irgendwelche Ratschläge?
Ein Zusatz.
Dieses Problem ist nicht im Zusammenhang mit Erhaltung der Kultur auf Thread als dies funktioniert gut!
CultureInfo.CurrentCulture = new CultureInfo("en-GB");
await Foo();
Debug.WriteLine(Thread.CurrentThread.CurrentCulture);// Works is en-gb
}
private Task Foo()
{
Debug.WriteLine(Thread.CurrentThread.CurrentCulture);// Works is en-gb
return Task.FromResult(true);
}
Scheint nicht mehr zu funktionieren. Wie hast du das Problem gelöst? EDIT: es scheint, du hast die Lösung selbst beantwortet ein anderes Thema: http://StackOverflow.com/a/37520214/1842261 – hbulens
ja die Lösung dort beschrieben funktioniert für mich –