/ / ASP.NET Como processar apenas um manipulador HTTP por vez de um usuário especificado? - asp.net, http, mutex, manipulador

Como processar apenas 1 manipulador HTTP de cada vez de um usuário especificado? - asp.net, http, mutex, manipulador

Eu tenho o próximo problema: Eu preciso processar apenas uma solicitação por vez de cada usuário. Vamos supor que o servidor identifique cada usuário como UserID, enviado na string de consulta. Como o servidor pode funcionar da mesma forma que o FIFO (não comece a processar a próxima solicitação até que a anterior seja totalmente processada)? Devo usar os mutexes nomeados dentro do manipulador HTTP e atribuir o nome ao mutex pelo UserID?

Desde já, obrigado, Valentin

Respostas:

2 para resposta № 1

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

Se o usuário solicitar novamente, sem ter oprimeiro pedido concluído, basta rejeitá-lo retornando de ProcessRequest () sem nenhuma outra linha de código executada. Além disso, você pode responder ao usuário com uma 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>");
}
}
}