asp.net كيفية معالجة معالج HTTP فقط فقط في وقت واحد من مستخدم محدد؟

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

  •  20-09-2019
  •  | 
  •  

سؤال

لدي المشكلة التالية: أحتاج إلى معالجة طلب واحد فقط في وقت واحد من كل مستخدم. يتيح لك افتراض أن الخادم يحدد كل مستخدم يكون معرف المستخدم، تم إرساله في سلسلة الاستعلام. كيف يمكن أن تجعل الخادم يعمل الطريق مثل FIFO (لا تبدأ في معالجة الطلب التالي حتى تتم معالجة السابق بالكامل)؟ هل يجب علي استخدام Mutexes المسمى داخل معالج HTTP وتعيين الاسم إلى Mutex من قبل Userid؟

شكرا مقدما، فالنتين

هل كانت مفيدة؟

المحلول

عندما يأتي الطلب الأول، ضع علامة في الجلسة. إعادة تعيين هذا العلم فقط بعد معالجة الطلب الأول يكمل.

إذا طلب المستخدم مرة أخرى، دون إكمال الطلب الأول، فقط رفض الطلب عن طريق العودة من 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