ASP.NET 지정된 사용자로부터 한 번에 1 개의 HTTP 핸들러 만 처리하는 방법은 무엇입니까?
문제
다음 문제가 있습니다. 각 사용자로부터 한 번에 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>");
}
}
}
제휴하지 않습니다 StackOverflow