Domanda

Ho il problema successivo: Ho bisogno di elaborare solo 1 richiesta alla volta da ogni utente. Consente di supporre che server identifica ogni utente sia UserID, inviato in stringa di query. Come si può rendere il server lavorare nel modo come FIFO (non avviare l'elaborazione successiva richiesta fino a quando la precedente è completamente trattati)? Dovrei usare i mutex denominati all'interno gestore HTTP e assegnare il nome al mutex da UserID?

Grazie in anticipo, Valentin

È stato utile?

Soluzione

Quando la prima richiesta proviene, Impostare un flag nella Sessione. Reimpostare questo flag solo dopo l'elaborazione della prima richiesta completa.

Se l'utente richiede ancora una volta, senza avere la prima richiesta completato, basta rifiutare la richiesta di ritorno da ProcessRequest () senza ulteriore riga di codice eseguito. Inoltre, è possibile rispondere l'utente torna con adeguate status-messaggio.

Modifica

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>");
        }
    }
} 
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top