ASP.NET Wie nur 1 HTTP-Handler zu einem Zeitpunkt von einem bestimmten Benutzer zu verarbeiten?

StackOverflow https://stackoverflow.com/questions/2447417

  •  20-09-2019
  •  | 
  •  

Frage

Ich habe das nächste Problem: Ich muß von jedem Benutzer nur 1 Anfrage zu einem Zeitpunkt, verarbeiten. Nehmen wir an, dass Server identifiziert jeden Benutzer sei UserID, in Query-String gesendet. Wie kann die Server-Arbeit macht die Art und Weise wie FIFO (nicht verarbeiten nächste Anfrage starten, bis die vorherigen vollständig verarbeitet wird)? Soll ich den Namen mutexes innerhalb HTTP-Handler und den Namen Mutex von Benutzer-ID zuweisen?

Vielen Dank im Voraus, Valentin

War es hilfreich?

Lösung

Wenn die erste Anforderung kommt, legen Sie einen Flag in Session. Zurücksetzen dieses Flag erst nach der Verarbeitung der ersten Anforderung abgeschlossen ist.

Wenn der Benutzer erneut anfordert, ohne die erste Anforderung, die abgeschlossen ist, ablehnen gerade den Antrag von Process Rückkehr () ohne weitere Codezeile ausgeführt. Zusätzlich können Sie den Benutzer wieder mit entsprechender Status-Nachricht antworten kann.

EDIT

using System;
using System.Collections.Generic;
using System.Text;
using System.Web;
using System.Web.SessionState;

namespace MyHandlers
{
    public class MyHttpHander : IHttpHandler,IRequiresSessionState
    {
        public bool IsReusable
        {
            get { return true; }
        }

        public void ProcessRequest(HttpContext context)
        {
            context.Response.Write("<h1><b>HttpHandler Test</b></h1>");
            context.Session["Test"] = "Invoke a session in HttpHandler.";
            context.Response.Write(context.Session["Test"]+"<br>");
            context.Response.Write("<a href='HttpHandlerCsharp.aspx'><b>return</b></a>");
        }
    }
} 
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top