4 Stimmen

Begrenzung der Anzahl von Benutzern, die auf eine asp.net-Website zugreifen

Wie lässt sich die Zahl der (gleichzeitigen) Nutzer, die auf eine Webanwendung zugreifen, am besten begrenzen, die jeder einführen kann, der eine Website/Anwendung an einen Kunden verkauft, und wie lässt sich die Zahl der Nutzer, die aus der Ferne darauf zugreifen, erhöhen?

6voto

Pawel Krakowiak Punkte 9670

Wenn Sie die prozessinterne Sitzungszustandsverwaltung verwenden, können Sie die HttpApplicationState Klasse, indem Sie die Datei Global.asax einführen und etwas wie das Folgende in den Code dahinter schreiben:

void Application_Start(object sender, EventArgs e)
{
    Application["ActiveSessions"] = 0;
}

void Session_Start(object sender, EventArgs e)
{
    try
    {
        Application.Lock();

        int activeSessions = (int) Application["ActiveSessions"] + 1;
        int allowedSessions = 10; // retrieve the threshold here instead

        Application["ActiveSessions"] = activeSessions;

        if (activeSessions > allowedSessions)
            System.Web.HttpContext.Current.Response.Redirect("~/UserLimitReached.aspx", false);
    }
    finally
    {
        Application.UnLock();
    }
}

void Session_End(object sender, EventArgs e)
{
    Application.Lock();
    Application["ActiveSessions"] = (int)Application["ActiveSessions"] - 1;
    Application.UnLock();
}

Dann würden Sie in der UserLimitReached.aspx HttpSession.Abandon() aufrufen, um die aktuelle Sitzung effektiv zu beenden, so dass sie nicht auf das Limit angerechnet wird. Den Rest müssen Sie selbst herausfinden :)

0voto

cdeszaq Punkte 29945

Eine Möglichkeit wäre, aktive Sitzungen in einer Datenbank zu erfassen und jedes Mal, wenn sich ein Benutzer anmeldet, die Anzahl der aktiven Sitzungen zu überprüfen. Liegt sie unter einem bestimmten Schwellenwert, wird der Benutzer zugelassen, andernfalls wird er abgewiesen.

Um diese Nummer aus der Ferne zu verwalten, reicht ein einfaches Verwaltungsformular aus, mit dem Sie den Schwellenwert in der Datenbank aktualisieren können.

0voto

Bernhard Hofmann Punkte 10053

Zusätzlich zu den vorangegangenen Antworten denke ich, dass Sie Ihre eigene Zeitüberschreitung einführen müssen, damit die Sitzungen nicht verweilen und gesperrt werden. Anstatt Sitzungen zu verwenden, können Sie, wenn Sie eine Anmeldung haben, diese auf der Grundlage von Anmeldungen überwachen und sie aktiv halten, indem Sie die letzte Aktivität pro Benutzer in einem Wörterbuch/Array aufzeichnen. Auf diese Weise sollten Sie leicht erkennen können, welche Benutzer die Website nutzen und welche die letzten aktiven Benutzer sind. Wenn Sie dies mit den Sitzungen verknüpfen, können Sie die Sitzungen des zuletzt aktiven Benutzers ablaufen lassen. Wenn mehr als die angegebene Anzahl von Benutzern die Website nutzen, müssen sich einige (die am wenigsten aktiven) ständig anmelden. In Anbetracht der Tatsache, dass Webanwendungen nicht miteinander verbunden sind, denke ich, dass Sie einen gewissen Prozentsatz an Gnadenfrist zulassen müssen, so dass bei einer Begrenzung auf 20 Benutzer vielleicht 22 gleichzeitig aktiv sein können.

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