2016-11-16 11 views
-1

Auf meiner Server-Seite Ich habe die folgende Zeile Code als globalen Klassenvariable pflegen:C# einen Booleschen Wert auf Server-Seite

 public static bool Test= false; 

Später in meinem Code werde ich den Wert auf wahr gesetzt;

Ich habe einige Methoden in der gleichen Klasse, die auf dem obigen booleschen Wert (entweder True oder False) beruhen. Die Methoden erhalten einen Trigger von einem Ajax-Aufruf von der Client-Seite.

Problem: Der Wert unter jedem Kunden gemeinsam genutzt wird, wie ich die Bool als Static erklärt.

Wenn ich Static entfernen, dann bekomme ich ein neues Problem, das der Wert für den gleichen Benutzer für seine nachfolgenden Aufrufe dieser Methoden nicht beibehalten wird.

Frage? Wie kann ich diesen bool seinen Wert für jeden Benutzer beibehalten.

+4

Nun, Sie sollten permanenten Speicher pro Benutzer haben - z.B. eine Datenbanktabelle, die durch die Benutzer-ID codiert ist. Sie wollen sich wirklich nicht darauf verlassen, a) immer den gleichen Server zu treffen; b) Der Server wird nicht neu gestartet. –

+0

Welche Art von Anwendung laufen Sie? Formen? MVC.NET? – smoksnes

+0

@smoksnes, es ist eine asp.net MVC-Anwendung. – Benjamin

Antwort

1

Erstens bedeutet "statisch", dass der Wert der Eigenschaft während des gesamten Lebenszyklus der Anwendung gleich ist (könnte recycelt werden). Lesen Sie mehr hier: https://msdn.microsoft.com/en-us/library/79b3xss3.aspx

Zweitens, lassen Sie uns Ihr Problem als eine gemeinsame Ressource denken, die Sie alle Benutzer darauf zugreifen möchten. Im besten Fall möchten Sie es in einer Datenbank speichern und alle Benutzer über ein Repository-Muster oder etwas auf die Datenbank zugreifen lassen. Wenn Sie (aus irgendeinem Grund) keine Datenbank haben, können Sie diesen Wert in einer Datei speichern.

+0

Ich habe keine Datenbank, ich denke, den Bool-Wert an die Client-Seite zu senden und es an den Server zurückzusenden, damit sichergestellt ist, dass ich immer einen korrekten Wert habe. Aber ich frage mich, ob es einen klügeren Weg gibt, dies zu tun? – Benjamin

+1

Senden Sie es an den Client ist nicht klug. Speichern Sie den Wert in der temporären Datei, oder sehen Sie, wie Sie ihn im Speicher zwischenspeichern (wird auch nicht sinnvoll sein, wenn es viele Daten gibt) Lesen Sie mehr: https://msdn.microsoft.com/en-us/library/ff477235. aspx – Fourat

Verwandte Themen