• ASP.NET Core 1 – قسمت ششم
ASP.NET Core 1 – قسمت ششم
1395/01/26 - 19:27:38 // MVC 5 & 6 // 0 نظر // 553 بازدید

در قسمتهای قبلی Middle Ware از طریق تنظیمات و کدنویسی در متد Configure ایجاد گردید . همانطور که مشاهده میکنید ما از طریق یک Extension Method درون اینترفیس IApplicationBuilder که در اصل همان متد UseIISPlatformHandler است میتوان در سطح IIS روالهای Authentication را برقرار کنیم .

بسمه تعالی

ASP.NET Core 1 قسمت ششم

در این قسمت به بررسی Middle Ware و نقش IApplicationBuilder خواهیم پرداخت .

 

همانطور که در تصویر بالا مشاهده میکنید ، در قسمتهای قبلی Middle Ware از طریق تنظیمات و کدنویسی در متد Configure ایجاد گردید . همانطور که مشاهده میکنید ما از طریق یک Extension Method درون اینترفیس IApplicationBuilder که در اصل همان متد UseIISPlatformHandler است میتوان در سطح IIS روالهای Authentication را برقرار کنیم . حتی اگر Authentication در سطح پروژه برقرار نباشد هم این روالها به هر حال برقرار هستند .

خوب حالا وارد فایل Startup بشوید تا مراحل بعدی را آغاز کنیم .

 

فلش من در تصویر متوجه کامنتی است که به صورت پیش فرض درون فایل Startup.cs و در بالای متد Configure قرار دارد. Use this method to configure the HTTP request pipeline و این یعنی آنکه همه درخواستها در عمل از این متد عبور کرده و در اینجا میتوان تصمیم گیریهای مختلف را اعمال نمود .

حال من قصد دارم اندکی این Middle Ware را تغییر داده و یکسری کارهای جنبی دیگر از طریق کدنویسی انجام دهم . وقتی یک پروژه خالی هم ایجاد کنیم ، این متد app.UseIISPlatformHandler(); به صورت پیش فرض فراخوانی شده است . این متد وظیفه اعمال Authintication را در سطح IIS بر عهده خواهد داشت . در اصل این متد همه Request ها را بررسی کرده و مشخص میکند آیا از لحاظ Windows Identity هر Request در وضعیت Valid قرار دارد یا نه.

قسمت بعدی Middle Ware که صدا زده میشود متد Run از app میباشد .

 

این متد Run اجازه Proccess هر Response را خواهد داد. اگر به کد

  1. app.Run(async (context) =>  
 

دقت کنید خواهید دید که context یا در اصل یک Http context چگونه میتواند دارای خواصی و روالهای مختلف باشد . یا مثلن متد context.Response.WriteAsync(greeting); که متد Write به ما اجازه صدور و نوشتن یک پیام را خواهد داد .

خوب اگر من یک تکه کد بعد از متد RUN به عنوان یک Middle Ware دیگر قرار دهم ، خواهید دید که آن بخش دیگر صدا زده نخواهد شد . اکثر Middle Ware ها یک پیشوند Use خواهند داشت . مشابه

  1. app.UseIISPlatformHandler();  
 

خوب حالا از طریق Nuget یک Library جدید به پروژه اضافه کنیم و کار را اد امه دهیم . درون Nuget به دنبال

Microsoft.aspnet.diagnostics باید بگردید .

 

همانطور که میبینید این Library وظیفه Exception Handling را بر عهده خواهد داشت . خوب این Package را نصب کنید تا بتوانیم ادامه مراحل را ادامه دهیم . خوب اگر الان درون Project.Json را نگاه کنیم ، خواهیم دید که یک خط کد جدید به آن اضافه شده است .

  1. "Microsoft.AspNet.Diagnostics""1.0.0-rc1-final"  
 

خوب حالا برگردیم به Startup.cs و مراحل را ادامه میدهیم .

یک خط کد Middle Ware جدید مانند من به اضافه کنید . خط کد

  1. app.UseWelcomePage();  
 

را بعد از app.UseIISPlatformHandler(); اضافه کنید . و پروزه را Save و اجرا کنید . صفحه WelCome را مشاهده خواهید کرد .خوب با این کد دیگر هر دستور دیگری هم قبل از نوشته شده باشد باز هم فقط صفحه خوش آمد نمایش داده خواهد شد . این دستور فقط برای کنترل کدها مفید است ولی در پروژه های واقعی اصلن دلیلی به استفاده از آن وجود ندارد .

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

به جای آن دستور خوش آمد گویی ، دستور زیر را استفاده کنید .

  1. app.UseRuntimeInfoPage();  
 

خوب حالا پروژه را Run کرده و خواهید دید که اتفاق خاصی نخواهد افتاد . باز همان پیام قبلی درون Json File نمایش داده خواهد شد . برای اینکه این دستور را بتوان بررسی کرد ، آدرس صفحه را اینگونه تغییر دهید .

  1. http://localhost:44958/runtimeinfo  
 

حالا مشاهده میکنید که بر اساس تغییر Url یک صفحه خاص Generate شده و به شما نمایش داده خواهد شد . این صفحه مشخصات Run time را به شما نمایش خواهد داد .

نکته مهم اینجا ترتیب اجرای دستورات Middle Ware میباشد . اگر همین دستور را قبل از app.run به کار ببرید ، خواهید دید که آن صفحه info را نخواهید دید .

همانطور که مشاهده کردید Middle Ware در اصل وظیفه انجام تنطیمات و ارسال و دریافت محتوا را بر عهده دارد . متدهای این سری دستورات Over Load های مختلفی دارند. مثلن اکر من بخواهم آدرس آن صفحه Info را عوض کنم ، باید از یکی از Overload ها که در اصل یک Path از من دریافت میکند را مطابق زیر استفاده کنم .

  1. app.UseRuntimeInfoPage("/inf");  
 

با تایین این Path برای داشتن آن صفحه Info باید از /inf استفاده کنید . پس میبینید که اکثر تنظیمات در Middle Ware و از طریق کدنویسی انجام خواهد شد .

خوب اجازه بدهید بحث را جمع کنیم . اولن همه پروژه های ASP.NET باید Middle Ware داشته باشند . دومن برای استفاده از آنها باید Package لازمه را Include کرده و در Project.Json تنظیمات لازمه را اعمال نمود . بعد از این مراحل باید دستورات لازمه را در Middle Ware Pipe Line قرار داده و از آن استفاده نمود . در قسمت بعدی یکسری اجزای Middle Ware دیگر را به پروزه افزوده و به شرح و بررسی آنها خواهیم پرداخت .

موفق باشید .

علی کلاهدوزان
معرفی نویسنده : علی کلاهدوزان

سلام بر دوستان ،
شاید رایج است به عنوان پروفایل کاربر ، چند خطی راجع به خودم بنویسم ، ولی وضعیت کاری و سوابق من با یک جستجوی ساده در گوگل مشخص خواهد شد ، لذا سرتان را با مطالب بی مورد به درد نیاورم بهتر است . اگر نکته خاصی لازم بود بدانید در قسمت "ایلیا سافت در یک نگاه" به احتمال زیاد یافت خواهد شد . جزئیات بیشتر را سوال کنید ، آدرس ایمیل Ali@Kolahdoozan.com همیشه جوابگوی شماست .امیدوارم از مطالب سایت استفاده کرده باشید . شاد و پیروز باشید .

امتیاز به مطلب
           
نظرات کاربران
ارسال نظر