1

我有下一个问题:我一次只需要处理来自每个用户的 1 个请求。让我们假设服务器将每个用户标识为 UserID,在查询字符串中发送。如何使服务器以 FIFO 的方式工作(在前一个请求完全处理之前不要开始处理下一个请求)?我应该在 HTTP 处理程序中使用命名的互斥锁并通过 UserID 将名称分配给互斥锁吗?

提前致谢, 瓦伦丁

4

1 回答 1

2

当第一个请求到来时,在 Session 中设置一个标志。仅在第一个请求的处理完成后重置此标志。

如果用户再次请求,但没有完成第一个请求,只需通过从 ProcessRequest() 返回来拒绝请求,而无需执行任何进一步的代码行。此外,您可以使用适当的状态消息回复用户。

编辑

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>");
        }
    }
} 
于 2010-03-15T13:33:32.927 回答