ASP.NET 지정된 사용자로부터 한 번에 1 개의 HTTP 핸들러 만 처리하는 방법은 무엇입니까?

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

  •  20-09-2019
  •  | 
  •  

문제

다음 문제가 있습니다. 각 사용자로부터 한 번에 1 개의 요청 만 처리하면됩니다. 서버가 각 사용자가 Query String으로 전송 된 각 사용자를 userId로 식별한다고 가정합니다. 서버가 어떻게 FIFO와 같은 방식으로 작동하게 할 수 있습니까 (이전이 완전히 처리 될 때까지 다음 요청을 처리하지 마십시오)? HTTP 핸들러 내부에서 명명 된 뮤트를 사용하고 userID로 MUTEX에 이름을 할당해야합니까?

미리 감사드립니다, 발렌틴

도움이 되었습니까?

해결책

첫 번째 요청이 오면 세션에서 깃발을 설정하십시오. 첫 번째 요청이 완료된 후에만이 플래그를 재설정하십시오.

사용자가 다시 요청하는 경우 첫 번째 요청이 완료되지 않고 추가 코드 라인을 실행하지 않고 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>");
        }
    }
} 
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top