yellowspam
Goto Top

Object reference not set to an instance of an object - Nur bei Amerikanischen Usern

Hi Leute,

wir haben folgendes Prolem:


Wir haben ein Umfragetool, welches auf ASP.NET 1.1 basiert auf einem unserer Webserver laufen.
Jetzt tritt jedoch das Problem auf, dass enige User andauernd eine "Object reference not set to an instance of an object "-Meldung angezeigt bekommen wenn Sie die Umfrage machen wollen.
Das Interssante daran ist, dass es derzeit nur Nordamerikanische User trifft.

Wisst ihr woran das liegen könnte?

lg
Markus

Content-Key: 167836

Url: https://administrator.de/contentid/167836

Printed on: April 20, 2024 at 03:04 o'clock

Member: dog
dog Jun 10, 2011 at 08:23:59 (UTC)
Goto Top
Wisst ihr woran das liegen könnte?

Mein PC zeigt beim Starten immer "Fehler" - woran kann das liegen?
Member: kingkong
kingkong Jun 10, 2011 at 09:44:30 (UTC)
Goto Top
Da tust Du ihm jetzt unrecht. Seinen Fehlertext hat er benannt (und nicht einfach nur "Fehler" gesagt), und auch, in welchem Zusammenhang er auftritt.

@to: Was heißt "nordamerikanisch"? Beziehst Du Dich damit auf ein Zahlen- und Datumsformat? Denn genau das wäre jetzt mein erster Einfall - vielleicht irgendeine Überprüfung, die "hardcoded" auf europäische Trennzeichen oder ähnliches reagiert?!

Lief die Umfrage bisher anstandslos bei diesen Usern? Und wenn ja, was habt ihr geändert?

Generell wäre übrigens der relevante Teil deiner Konfiguration interessant.
Member: dog
dog Jun 10, 2011 at 09:46:45 (UTC)
Goto Top
Die Fehlermeldung ist eine Null-Pointer-Exception.
Das ist so ziemlich die generischste Fehlermeldung, die es in OOP-Umgebungen wie .NET gibt.
Ohne einen Stack-Trace ist das schonmal völlig witzlos.
Member: Yellowspam
Yellowspam Jun 10, 2011 at 10:25:03 (UTC)
Goto Top
@kingkong:

Also mit Nordamerikanisch meine ich in bezug auf die Herkunft des Users( geht aus seiner Emailsignatur hervor).
Die Umfrage lief bisher immer anstandslos, mein Vorgänger hat kein solches Problem genannt.
Geändert hat sich an der Applikation seit 2004 nichts mehr.

Wobei du recht haben könntest bezgl. des Datumsformats, im unten gelisteten Screenshot sieht man gut, dass er die Formatierung mm/dd/yyyy benutzt, evtl. wäre das (einer) der Ursachen.


@dog:

Anbei ein Screenshot mit Stack-Trace um aus dem witzlosen Thread einen witzigen zu machen.
Der Screenshot ist aus einem Mail herausgespeichert worden, hat also ne schlechte qualität.

Screenshot: http://img716.imageshack.us/img716/3212/nullreferenceerroralfor.jpg
Member: dog
dog Jun 10, 2011 at 10:38:16 (UTC)
Goto Top
Und welcher Code steht in bluestep.HRBoard.Web.Secure.Localization.GetLang() ?

Wahrscheinlich wird der User-Agent nicht richtig verarbeitet...
Member: Yellowspam
Yellowspam Jun 14, 2011 at 08:23:24 (UTC)
Goto Top
So, nach langem suchen im Versionsrepository konnte ich das entsprechende VB-Projekt noch finden, hier die gesamte GetLang()-Funktion.
Die Funktion sucht anhand von cookie und session-Informationen die bestmögliche Spracheeinstellung.

'
' Retrieves the best matching language/CultureInfo
'----------------------------------------------------------------
Public Function GetLang() As CultureInfo
'TODO: Try/Catch Error handling
'TODO: What happens if user has deactivated sessions/cookies ... ??

Dim ci As CultureInfo

'~~ temp
'ci = CultureInfo.CreateSpecificCulture("de")
'SetLang(ci)
'Return ci
'Exit Function
'~~ temp/ende

Try
' 1.) SESSION
'~~ get the lang from session
If Len(HttpContext.Current.Session("sLang")) > 0 Then
ci = CultureInfo.CreateSpecificCulture(Convert.ToString(HttpContext.Current.Session("sLang")))
Exit Try
End If

' 2.) COOKIES
'~~ retrieve lang from cookie
If Not HttpContext.Current.Request.Cookies("cLang") Is Nothing Then
ci = CultureInfo.CreateSpecificCulture(HttpContext.Current.Request.Cookies("cLang").Value.ToString)
Exit Try
End If

Finally
'Todo: we should check if the current culture is supported by
' the resource files, otherwise we should take the default-culture
If ci Is Nothing Then
' 3.) BROWSER SETTINGS
'~~ changed 20030505 has been currentCulture, but should be currentUICulture
If Not HttpContext.Current.Request.UserLanguages(0) Is Nothing Then
ci = System.Globalization.CultureInfo.CreateSpecificCulture(HttpContext.Current.Request.UserLanguages(0))
Else
ci = Thread.CurrentThread.CurrentUICulture
End If
End If
SetLang(ci)
End Try


If ci Is Nothing Then
ci = System.Globalization.CultureInfo.CreateSpecificCulture("en-US")
End If

Return ci

End Function