یکشنبه , ۳۱ شهریور ۱۳۹۸
خانه - #C - تمام آنچه که یک برنامه نویس Asp.Net باید درباره رویدادهای HTTP Request در IIS بداند.

تمام آنچه که یک برنامه نویس Asp.Net باید درباره رویدادهای HTTP Request در IIS بداند.

چکیده:

چرخه عمر یک برنامه ASP.NET با درخواست فرستاده شده توسط یک مرورگر به سرور وب مانند IIS آغاز می شود. اگر شما یک توسعه دهنده ASP.NET هستید که ماژول ها و سایر اجزای اپلیکیشن را ایجاد می کند، مهم است که چرخه زندگی درخواست های HTTP را در IIS یا هر وب سرور دیگری درک کنید. این مقاله به شما یک ایده و پیش زمینه از اتفاقاتی که هنگام پردازش درخواست HTTP انجام می شود، می دهد.

نکته: در IIS 6.0 دو خط لوله پردازش (pipeline) درخواست وجود دارد: یکی برای فیلترهای ISAPI موجود در کد Native  و دیگری برای برنامه های مدیریت شده مثل ASP.NET. با این حال در IIS 7.0، یک خط لوله پردازش تقاضای یکپارچه برای همه درخواستها وجود دارد. زمان اجرا ASP.NET با وب سرور یکپارچه شده است. همچنین توجه داشته باشید که اگر IIS 7 برای کار در حالت کلاسیک به جای حالت مجتمع پیکربندی شده باشد دقیقا مثل نسخه ششم عمل می کند.

هنگامی که یک درخواست برای IIS ساخته می شود، در صف اجرای درخواست های برنامه قرار میگیرد.این صف اجرا (Application pool) یک سری از آدرس های url  هستند که منتظرند تا به برنامه وارد شوند. (w3wp.exe) مسئول ارسال درخواست به برنامه است.

درخواست توسط خط لوله HttpApplication پردازش می شود و رویدادها به ترتیب زیر اخراج می شوند:

BeginRequest  رویداد BeginRequest باعث ایجاد هر درخواست جدید داده شده می شود. این رویداد همیشه اولین رویدادی است که در فرایند پردازش درخواست اجرا می شود.

AuthenticateRequest  رویداد AuthenticateRequest سیگنال هایی را نشان می دهد که پیکربندی  مکانیزم تأیید هویت درخواست فعلی را تأیید کرده است. تایید کردن درخواست در رویداد AuthenticateRequest تضمین می کند که درخواست قبل از پردازش درخواست ماژول متصل شده یا رویداد تایید شود.

PostAuthenticateRequest  رویداد PostAuthenticateRequest پس از رویداد AuthenticateRequest رخ می دهد. تمام اطلاعات در پروپرتی User از کلاس HttpContext قرار دارد و می تواند از آن استفاده کرد.

AuthorizeRequest  رویداد AuthorizeRequest نشان می دهد که ASP.NET درخواست فعلی را مجاز می داند.این رویداد را میتوانید مجوز های اختصاصی خودتان را بسازید.

PostAuthorizeRequest هنگامی رخ می دهد که کاربر برای درخواست فعلی مجاز است.

ResolveRequestCache هنگامی رخ می دهد که ASP.NET یک رویداد تایید را به اتمام میرساند تا ماژول های کش درخواست را از کش بخوانند، جلوگیری از اجرای پردازنده رویداد و فراخوانی هر متقاضی EndRequest.

PostResolveRequestCache – دستیابی به این رویداد به این معنی است که درخواست از کش نمیتواند خدمت کند و در نتیجه یک پردازنده HTTP ایجاد می شود. یک صفحه کلاس ایجاد می شود اگر یک صفحه ASP ایجاد شود.

MapRequestHandler – رویداد MapRequestHandler توسط زیرساخت ASP.NET برای تعیین پردازنده درخواست برای درخواست فعلی بر اساس نام فایل نام منابع مورد درخواست استفاده می شود.

PostMapRequestHandler – هنگامی رخ می دهد که ASP.NET درخواست فعلی را به دستگیرنده HTTP مناسب مطابقت می دهد

AcquireRequestState – هنگامی رخ می دهد که ASP.NET وضعیت فعلی (مثلا حالت جلسه) را به دست می دهد که با درخواست فعلی مرتبط است. یک شناسه جلسه معتبر باید وجود داشته باشد.

PostAcquireRequestState – زمانی رخ می دهد که اطلاعات دولتی (به عنوان مثال، وضعیت جلسه یا حالت برنامه) که با درخواست فعلی همراه است به دست آمده است.

PreRequestHandlerExecute – زمانی رخ می دهد که ASP.NET شروع به اجرای یک رویداد را انجام دهد

ExecuteRequestHandler – هنگامی رخ می دهد که پردازنده خروجی تولید می کند. این تنها رویداد نیست که توسط کلاس HTTPApplication نمایش داده شود.

PostRequestHandlerExecute – هنگامی رخ میدهد که پردازنده رویداد ASP.NET تولید خروجی را به پایان برساند

ReleaseRequestState – پس از اتمام ASP.NET، تمام پردازندههای درخواست درخواست را اجرا می کند. این رویداد سیگنال های ماژول های حالت ASP.NET را برای ذخیره وضعیت فعلی درخواست می کند.

PostReleaseRequestState – هنگامی رخ میدهد که ASP.NET تکمیل تمام پردازندههای رویداد درخواست را انجام داده و دادههای وضعیت درخواست همچنان حفظ شده است.

UpdateRequestCache – زمانی رخ می دهد که ASP.NET پایان اجرا یک رویداد را به دست می دهد تا ماژول های ذخیره سازی پاسخ های ذخیره شده را که برای خدمت یکسان از حافظه پنهان استفاده می شود، دوباره استفاده کنند.

PostUpdateRequestCache – زمانی که thePostUpdateRequestCache مطرح شده است، ASP.NET پردازش کد را تکمیل کرده و محتویات حافظه پنهان نهایی شده است.

LogRequest – درست قبل از اینکه ASP.NET هر گونه ورود به سیستم برای درخواست فعلی را انجام دهد. رویداد LogRequest حتی اگر خطایی رخ دهد، مطرح می شود. شما می توانید رویداد LogRequest را برای تحویل سفارشی برای درخواست ارائه کنید.

PostLogRequest – زمانی رخ می دهد که درخواست وارد شده باشد

EndRequest – هنگامی که ASP.NET به درخواست پاسخ می دهد، به عنوان آخرین رویداد در زنجیره ای از خط لوله HTTP رخ می دهد. در این حالت می توانید پاسخ را فشرده یا رمزنگاری کنید.

PreSendRequestHeaders – پس از EndRequest پس از روشن شدن (به طور پیش فرض) بوسیله روشن می شود. درست قبل از اینکه ASP.NET هدر HTTP را به مشتری ارسال کند، رخ می دهد.

PreSendRequestContent – زمانی رخ می دهد که ASP.NET محتوا را به مشتری ارسال کند.

امیدوارم این پست شما را در درک چگونگی جریان خط لوله HttpApplication کمک کند. مسلح با این دانش، شما می دانید که وقایع به دام افتاده برای انجام وظایف در زمان مناسب از چرخه زندگی رویداد.

امیدوارم که شما این مقاله را دوست داشته باشید و از شما برای دیدن آن متشکرم

منبع

درباره ی محمد لطفی

برنامه نویس و توسعه دهنده .Net هستم. از یادگیری و آموزش لذت می برم. برنامه نویسی رو از دانشگاه شروع کردم و الانم در نیک آموز مهارت های خودم رو توسعه می دم.

همچنین ببینید

ASP.NET-CORE-Routing

مسیریابی در ASP.NET Core

مسیریابی در ASP.NET Core به مکانیسمی گفته می شود که آدرس کامل را از درخواست Http  …

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *