4 Stimmen

Problem mit statischem Feld in asp.net-Website

Ich arbeite derzeit an einer ASP.NET-Website. Auf einer meiner Seiten hatte ich ein statisches Feld für die CompanyId des aktuell eingeloggten Benutzers.

private static Guid _CompanyId = Company.Get().CompanyId;

Company.Get() gibt die Informationen über das Unternehmen des aktuell angemeldeten Benutzers zurück, wobei die UserId mit Hilfe von:

System.Web.Security.Membership.GetUser();

Aber wenn Sie sich als ein anderer Benutzer in einem anderen Unternehmen anmelden, Firma.Get().CompanyId würde die Guid des ersten Unternehmens zurückgeben.

Habe ich den Sinn der Verwendung statischer Felder übersehen, oder hat dies eine andere Ursache? Ich habe es behoben, indem ich alle Verweise auf _CompanyId in meinem Code-Behind mit dem Firma.Get().CompanyId um eine schnelle Lösung zu finden, aber das ist nicht wirklich eine gute Lösung.

7voto

Muhammad Akhtar Punkte 51432

Der Wert einer statischen Variable bleibt auf Anwendungsebene und damit benutzerübergreifend bestehen. Sie sollten zum Speichern Ihrer Informationen eine Sitzung verwenden. Der Wert einer statischen Variable ändert sich erst, wenn Sie den Wert neu zuweisen, die Anwendung neu starten usw.

3voto

Joe Caffeine Punkte 848

Sie sollten HttpContext.Current verwenden, um Variablen auf Sitzungsebene zu speichern. Statische Variablen sind für alle Sitzungen in Ihrer Webanwendung sichtbar.

1voto

Andy Gaskell Punkte 30777

Entfernen von static aus Ihrer Felddefinition sollte Ihnen das geben, wonach Sie suchen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X