ASP.NET Comment ne traiter que 1 gestionnaire HTTP à un moment d'un utilisateur spécifié?

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

  •  20-09-2019
  •  | 
  •  

Question

J'ai le problème suivant: je dois traiter seulement 1 demande à la fois de chaque utilisateur. Permet de supposer que le serveur identifie chaque utilisateur soit UserID, envoyé dans la chaîne de requête. Comment peut rendre le serveur fonctionne comme la manière FIFO (ne démarre pas le traitement de la demande suivante jusqu'à ce que la précédente est entièrement traitée)? Dois-je utiliser les mutex nommés à l'intérieur gestionnaire HTTP et attribuer le nom à mutex par UserID?

Merci d'avance, Valentin

Était-ce utile?

La solution

Lorsque la première demande vient, Définir un indicateur en session. Réinitialiser ce drapeau seulement après le traitement de la première demande complète.

Si l'utilisateur demande à nouveau, sans avoir la première demande dûment remplie, rejettent simplement la demande de retour de ProcessRequest () sans autre ligne de code exécuté. De plus, vous pouvez répondre retour à l'utilisateur statut message approprié.

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>");
        }
    }
} 
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top