ASP.NET Como processar apenas 1 manipulador HTTP de cada vez de um usuário especificado?

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

  •  20-09-2019
  •  | 
  •  

Pergunta

Tenho o próximo problema: preciso processar apenas 1 solicitação de cada vez de cada usuário. Vamos supor que o servidor identifique cada usuário do usuário, enviado na sequência de consultas. Como fazer o servidor funcionar da maneira como o FIFO (não comece a processar a próxima solicitação até que o anterior seja totalmente processado)? Devo usar os mutexes nomeados dentro do manipulador HTTP e atribuir o nome ao mutex pelo UserID?

Obrigado antecipadamente, Valentin

Foi útil?

Solução

Quando a primeira solicitação chegar, defina um sinalizador em sessão. Redefina esse sinalizador somente após o processamento da primeira solicitação concluir.

Se o usuário solicitar novamente, sem a primeira solicitação concluída, basta rejeitar a solicitação retornando do ProcessRequest () sem nenhuma linha adicional de código executada. Além disso, você pode responder ao usuário de volta com a mensagem de status apropriada.

EDITAR

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>");
        }
    }
} 
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top