ArgumentExceptions beim Start von lokalisierter Anwendung

20/05/2009 - 21:11 von Ralf Kaiser | Report spam
Hallo,

ich habe da eine Webanwendung die über resx Dateien lokalisiert ist.
Voreingestellt in der web.config ist die Culture "de-DE", die Sprache kann
spàter zur Laufzeit umgeschaltet werden.

Seit einiger Zeit wunderte ich mich, dass der Start der Applikation aus VS
heraus immer langsamer wurde. Jetzt fiel mir auf, dass bei Applikationsstart
eine grosse Anzahl von ArgumentExceptions geworfen wird. Die Meldung in dieser
Exception (ich hab bei dieser Exception anhalten lassen) ist "Kultur resx wird
nicht unterstützt".

Scheinbar wird da irgendwo versucht die aktuelle Kultur auf "resx" zu setzten
(sollte aber "de-DE" sein.

Zu der Exception gibt es keinen anzeigbaren Quelltext, scheinbar passiert es
irgendwo bevor noch der erste Code der eigentlichen Anwendung ausgeführt wird.

Wenn ich mir den Callstack ansehe dann wird zuerst irgenwann
"System.Web.Compillation.BuildResultResourceAssembly" aufgerufen, dann folgt
kurz drauf ein Aufruf von
"System.Web.HttpServerUtility.CreateReadOnlyCultureInfo('resx')". Woher dieses
"resx", das ja scheinbar als falscher Parameter, diese Exceptions auslöst, kommt
weiß ich absolut nicht.

Seltsam ist auch noch, dass dies nur dann passiert wenn ich die Anwendung gerade
compilliert habe. In diesem Fall dauert der Start extrem lange. Beende ich die
Anwendung und starte sie sofort neu dann starten sie im Bruchteil einer Sekunde,
OHNE die Exceptions.

Kann sich jemand erklàren, was da passiert?

Ciao,
Ralf
 

Lesen sie die antworten

#1 Stefan Falz [MVP]
21/05/2009 - 00:02 | Warnen spam
Hallo Ralf,

"Ralf Kaiser" schrieb:

Scheinbar wird da irgendwo versucht die aktuelle Kultur auf "resx" zu setzten (sollte aber "de-DE" sein.



generell kann ich persönlich die Verwendung von Resourcendateien zur Lokalisierung
von ASP.NET Anwendung nicht wirklich empfehlen. Insbesondere, wenn sich die Texte
zur Laufzeit mal àndern können, ist eine eigene Lösung (Xml Dateien, Datenbank,
...) eigentlich sinnvoller und besser wartbar.

Seltsam ist auch noch, dass dies nur dann passiert wenn ich die Anwendung gerade compilliert habe. In diesem Fall dauert der Start
extrem lange. Beende ich die Anwendung und starte sie sofort neu dann starten sie im Bruchteil einer Sekunde, OHNE die Exceptions.



Beim ersten Start einer Anwendung wird diese im Hintergrund nochmals kompiliert.
Schau mal hier rein, da wirds kurz erklàrt:

http://de.wikipedia.org/wiki/.NET#P...C3.BChrung

Dass der erste Start also lànger dauert ist normal. Ggfs. werden hierbei dann
auch vom Compiler Aktionen durchgeführt, die diese Fehler erzeugen. Die Anwendung
selbst làuft ja aber dennoch, oder? Falls ja, mach dir da keinen Kopf, das ist
normal :)

Tschau, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

Ähnliche fragen