2d17

Redirect درخواست (ریدایرکت) در asp.net core

لینک کوتاه https://codecell.ir/a/2d17
به اشتراک گذاری
کلمات کلیدی:
نویسنده:
0
0
5
آموزش های نویسنده:
روش های ریدایرکت درخواست در asp.net core

در برنامه های ASP.NET Core برای تغییر مسیر به یک URL خاص روش های مختلفی وجود دارد. در این مقاله با این تکنیک ها و کدهای مورد نیاز برای تغییر مسیر یک درخواست در ASP.NET Core آشنا می شویم.

بر اساس برخی شرایط مانند هدایت کاربر به صفحه ورود در صورت عدم وجود session معتبر، هدایت مجدد کاربران به صفحه اصلی در صورت ورود موفقیت آمیز، هدایت کاربر برای تغییر صفحه رمز عبور پس از انقضای رمز عبور ، هدایت به صفحه توضیحات خطا در صورت بروز یک استثنا غیرمنتظره و غیره همیشه نیاز به تغییر مسیر به یک URL دیگر وجود خواهد داشت.

روش های پیاده سازی برای Redirect و تغییر مسیر یک درخواست در  ASP.NET Core

ممکن است دلایل زیادی برای Redirect و تغییر مسیر به صورت موقت یا دائم از URL فعلی به URL دیگر وجود داشته باشد. چندین نوع روش در ASP.NET Core  وجود دارد که با استفاده از آن ها می توانیم درخواست را در ASP.NET Core  تغییر مسیر دهیم. بیایید به جزئیات این روش ها نگاهی کنیم و راه های درخواست  تغییر  مسیر  در ASP.NET Core را درک کنیم.

روش های موجود در ASP.NET Core برای تغییر مسیر به شرح زیر است:

• Redirect 
• RedirectToAction 
• RedirectToPage 
• RedirectToRoute 
• LocalRedirect 
 

هر یک از روش‌های بالا دارای تفاوت هایی هستند و وضعیت های HTTP مختلف مانند 302 – Found یا  301 – Moved Permanently یا 307 – Temporary Redirect یا 308 – Permanent Redirect را بر می گردانند.

کدهای وضعیت HTTP

302 - Found:

این کد وضعیت به این معنی است که URL منبع درخواستی به طور موقت هدایت شده است و ممکن است در درخواست های بعدی تغییراتی در آن ایجاد شود. بنابراین clientها  باید به استفاده از URL درخواستی ادامه دهند.

301 - Moved Permanently:

این کد وضعیت به این معنی است که URL منبع درخواستی به طور دائم تغییر کرده و URL جدید در پاسخ مشخص شده است.

307 - Temporary Redirect:

این وضعیت مانند 302 است، با این استثنا که عامل کاربر در هنگام فراخوانی URL تغییر مسیر داده شده نباید روش HTTP استفاده شده را تغییر دهد، یعنی اگر در درخواست اصلی POST استفاده شده است، POST باید در URL تغییر مسیر داده شده نیز استفاده شود.

308 - Permanent Redirect:

این وضعیت مانند 301 - Move Permanently  است با این تفاوت که عامل کاربر در هنگام فراخوانی URL تغییر مسیر داده شده نباید روش HTTP استفاده شده را تغییر دهد، یعنی اگر در درخواست اصلی از POST استفاده شده است، POST باید در URL هدایت شده نیز استفاده شود.

ایجاد پروژه ASP.NET Core MVC برای نمایش Redirect ها

برای بررسی Redirect و تغییر مسیرها، از Visual Studio 2022 Community Edition  با net6  برای ایجاد برنامه وب ASP.NET Core 6 استفاده کرده ایم.

برای نمایش نتایج Redirect ها ، یک PoliciesController ایجاد کرده ایم و یک action به نام PrivacyPolicy به آن اضافه کرده ایم.

در زیر تکه کد PoliciesController  و PrivacyPolicy.cshtml آمده است.

بیایید نحوه استفاده، نوع بازگشتی و کد وضعیت HTTP هر یک از روش‌های Redirect را با جزئیات درک کنیم.

روش Redirect 

روش Redirect برای تغییر مسیر درخواست در ASP.NET Core از یک URL به URL دیگر استفاده می شود. این روش می تواند  برای تغییر مسیر بر اساس برخی شرایط استفاده شود. متد Redirect بخشی از کلاس Controllerbase است بنابراین مستقیماً برای استفاده در Controller در دسترس است و یک URL را به عنوان یک رشته ورودی دریافت می کند.

این متد به ما این امکان را می دهد که به یک URL خاص به جای برخی از action ها در برخی کنترلرها تغییر مسیر دهیم. این URL می تواند در داخل برنامه باشد یا می تواند آدرس برخی از برنامه های شخص ثالث دیگر نیز باشد.

این متد یک شی RedirectResult ایجاد می کند که درخواست را به URL مشخص شده هدایت می کند.

در تکه کد زیر نحوه استفاده از متد Redirect در ASP.NET Core MVC نشان داده شده است.

کد  بالا مربوط به اکشن Privacy در کنترلر Home است. وقتی اکشن Privacy در کنترلر Home  را فراخوانی می‌کنیم، درخواست را به یک Url مشخص، یعنی اکشن  PrivacyPolicy در کنترلر Policies  هدایت می‌کند.

هنگامی که Home/Privacy فراخوانی می‌شود، یک شی RedirectResult با کد  وضعیت 302 - Found  برمی‌گرداند  و همچنین هدر Location  را  روی URL هدفی که  در روش Redirect در بالا مشخص شده است، تنظیم می‌کند.

مرورگر در صورت مواجهه با کد وضعیت 302، هدایت مجدد را به Url  جدید Policies/PrivacyPolicy انجام می‌دهد. در زیر جزئیات مربوط به ابزارهای توسعه دهنده مرورگر (F12) نشان داده شده است.

روش Redirect در asp core

روش RedirectPermanent  

این روش شبیه Redirect است اما در کد وضعیت HTTP که توسط درخواست بازگردانده می شود متفاوت است. روش RedirectPermanent کد وضعیت HTTP 301 – Moved Permanently را برمی گرداند. این کد وضعیت HTTP نشان می دهد که منبع درخواستی به طور دائم به URL جدیدی که در هدر Location مشخص شده است منتقل شده است.

این وضعیت HTTP 301 – Moved Permanently  در زمینه موتورهای جستجو برای ابزارهای مبتنی بر بهینه سازی موتور جستجو و سئو مهم است.

این متد همچنین بخشی از کلاس Controllerbase است بنابراین مستقیماً برای استفاده در کلاس کنترلر در دسترس است و یک URL را به عنوان یک رشته در ورودی می پذیرد.

این روش یک شی RedirectResult با پرچم Permanent=true ایجاد می کند که درخواست را به URL مشخص شده هدایت می کند.

در تکه کد زیر استفاده از روش RedirectPermanent در ASP.NET Core MVC نشان داده شده است.

همانطور که در شکل زیر نشان داده شده است برای درخواست Home/Privacy ، مرورگر کد پاسخ 301 – Moved Permanently  را با URL جدید در هدر Location  دریافت کرده است. در صورت مواجهه با کد وضعیت 301،  مرورگر هدایت مجدد را به URL جدید Policies/PrivacyPolicy انجام می‌دهند.

روش RedirectPermanent  در asp core

روش RedirectPreserveMethod 

این روش شبیه Redirect است اما در کد وضعیت HTTP که توسط درخواست بازگردانده شده است متفاوت هستند. همچنین این روش نوع درخواست را حفظ می کند، یعنی از همان روش HTTP (get/post) و بدنه برای تغییر مسیر به URL جدید در هدر Location استفاده می کند.  RedirectPreserveMethod کد وضعیت 307 - Temporary Redirectرا برمی گرداند.

این متد همچنین بخشی از کلاس Controllerbase است بنابراین مستقیماً برای استفاده در کلاس کنترلر در دسترس است و یک URL را به عنوان یک رشته در ورودی می پذیرد.

این روش یک شی RedirectResult با پرچم Permanent=false و PreserveMethod=true ایجاد می کند که درخواست را به URL مشخص شده هدایت می کند.

در تکه کد زیر استفاده از روش RedirectPreserveMethod در ASP.NET Core MVC نشان داده شده است.

همانطور که در شکل زیر نشان داده شده است برای درخواست Home/Privacy ، مرورگر کد پاسخ 307 – Temporary Redirect را با URL جدید در هدر Location  دریافت کرده است. در صورت مواجهه با کد وضعیت 307،  مرورگر هدایت مجدد را به URL جدید Policies/PrivacyPolicy انجام می‌دهند.

روش RedirectPreserveMethod در asp core

روش RedirectPermanentPreserveMethod 

این روش شبیه Redirect است اما در کد وضعیت HTTP که توسط درخواست بازگردانده شده است متفاوت هستند. همچنین این روش نوع درخواست را حفظ می کند، یعنی از همان روش HTTP (get/post) و بدنه برای تغییر مسیر به URL جدید در هدر Location استفاده می کند. . RedirectPreserveMethod کد وضعیت 308 - Redirect Permanentرا برمی گرداند.

این روش یک شی RedirectResult با پرچم Permanent=true و PreserveMethod=true ایجاد می کند که درخواست را به URL مشخص شده هدایت می کند.

در تکه کد زیر استفاده از روش RedirectPermanentPreserveMethod  در ASP.NET Core MVC نشان داده شده است.

همانطور که در شکل زیر نشان داده شده است برای درخواست Home/Privacy ، مرورگر کد پاسخ 308 – Redirect Permanent را با URL جدید در هدر Location  دریافت کرده است. در صورت مواجهه با کد وضعیت 308،  مرورگر هدایت مجدد را به URL جدید Policies/PrivacyPolicy انجام می‌دهند.

روش RedirectPermanentPreserveMethod در asp core

نتیجه گیری

در این مقاله با روش های مختلف موجود برای Redirect و تغییر مسیر درخواست در ASP.NET Core آشنا شدیم. ما 5 روش اصلی Redirect  و تغییرات آنها برای تغییر مسیر یک درخواست را بررسی کردیم. شما می توانید بر اساس نیاز خود از این روش ها استفاده کنید و به رفتار دلخواه برسید. 
تغییر مسیر و Redirect یک درخواست در ASP.NET Core یک جنبه بسیار مهم است که در اکثر برنامه های ASP.NET Core برای سناریوهای مختلف استفاده می شود. 

دانلود سورس پروژه روش های Redirect در asp core از gitub

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

Response Caching در ASP.NET Core

Response Caching یک مکانیزم ذخیره سازی پاسخ سرور توسط مرورگر یا سایر کلاینت ها است. با استفاده از Response Caching در Asp.net Core می توانیم عملکرد و کارایی سیستم را بالا ببریم.

305 0 1402/10/22

Output Caching در ASP.NET Core 8.0

Output Caching یک ویژگی جدید است که از زمان .NET 7 معرفی شده است. این ویژگی به ما این امکان را می دهد که به راحتی یک کش پاسخ برای Web API خود بدون پیاده سازی IMemoryCache راه اندازی کنیم.

354 0 1402/10/14

الگوی طراحی زنجیره مسئولیت در سی شارپ

الگوی زنجیره مسئولیت یا Chain of Responsibility Design Pattern یک الگوی طراحی رفتاری(behavioral design pattern) است که اجازه می‌دهد یک درخواست در امتداد زنجیره‌ای از کنترل‌کننده‌های بالقوه ارسال شود تا زمانی که درخواست مناسب برای پردازش آن را پیدا کند.

338 2 1402/10/01

ViewComponent در ASP.NET Core

در ASP.NET Core با استفاده از ViewComponent ها می توان اجزای ماژولار، قابل استفاده مجدد، قابل نگهداری و مقیاس پذیر برای ساخت برنامه های کاربردی وب ایجاد کرد. در این مقاله به نحوه ایجاد و فراخوانی ViewComponent در Asp.net core پرداخته ایم.

797 2 1402/05/15

تطبیق الگو در NET 7: ساده سازی تجزیه و تحلیل داده ها

تطبیق الگو یا Pattern Matching در net7 یک تکنیک قدرتمند برای تجزیه و تحلیل و دستکاری داده ها بر اساس ساختار آن ها است. تطبیق الگو یا Pattern Matching به توسعه دهندگان اجازه می دهد تا مقادیر را با یک الگوی خاص مطابقت دهند و اقدامات مربوطه را انجام دهند.

480 1 1402/04/05

تزریق وابستگی در ASP.NET Core

تزریق وابستگی (DI) یک الگوی طراحی نرم افزاری است که امکان ایجاد برنامه های کاربردی و ماژولار را فراهم می کند.. در .NET Core تزریق وابستگی یا Dependency injection یک ویژگی مهم است که می تواند برای ساده سازی توسعه برنامه، بهبود تست پذیری و کاهش پیچیدگی کد مورد استفاده قرار گیرد.

1٬161 1 1402/02/04

ضروری ترین کتابخانه های NuGet برای ASP.NET Core

در این مقاله مهمترین،ضروری ترین و پرکاربردترین کتابخانه های NuGet که هر توسعه‌ دهنده‌ ASP.NET Core باید برای توسعه بهتر و کاهش زمان مورد نیاز برای برنامه ‌های خود از آن استفاده کنند را مورد بررسی قرار داده ایم.

1٬113 1 1401/12/29

الگوی طراحی Factory در سی شارپ

الگوهای طراحی یکی از مهمترین جنبه های طراحی و معماری نرم افزار است. Factory Method یک الگوی طراحی ایجادی است که یک رابط برای ایجاد اشیاء در یک سوپر کلاس فراهم می‌کند. ما در این مقاله الگوی Factory Method Design در سی شارپ را بررسی می کنیم.

1٬140 1 1401/10/28

مقایسه List و Array در سی شارپ

آرایه و لیست در سی شارپ هر دو به عنوان مجموعه ای از مقادیر عمل می کنند، اما در نحوه ذخیره محتوای خود در حافظه و نحوه دسترسی به آنها متفاوت هستند. در این مقاله Benchmark و کارایی List<T> با سایز داینامیک، List<T> با سایز ثابت و Array ها را بررسی می کنیم.

1٬660 2 1401/09/01

LinkedList در سی شارپ

LinkedList یا لیست پیوندی در سی شارپ یک ساختار داده خطی است که عنصر را در مکان غیر پیوسته ذخیره می کند. LinkedList شامل گره هایی است که هر گره حاوی یک فیلد داده و یک مرجع (پیوند) به گره بعدی در لیست است. در سی شارپ، LinkedList یا لیست پیوندی یک نوع مجموعه جنریک است.

1٬595 0 1401/08/13

Garbage Collection در دات نت

به طور کلی، Garbage Collection (GC) یا جمع آوری زباله در .Net چیزی نیست جز به دست آوردن مجدد حافظه اختصاص داده شده به اشیایی که در حال حاضر در هیچ بخشی از برنامه ما استفاده نمی شوند. ما در این مقاله Garbage Collection را در سی شارپ بررسی خواهیم کرد.

2٬300 3 1401/03/30

.NET Core چیست؟

.Net (با تلفظ «دات نت») یک چارچوب نرم افزاری کامپیوتری مدیریت شده رایگان و منبع باز برای سیستم عامل های ویندوز، لینوکس و macOS است. این پروژه در درجه اول توسط کارمندان مایکروسافت از طریق دات نت توسعه یافته و تحت مجوز MIT منتشر شده است.

2٬083 2 1401/03/16

پشته(Stack) در سی شارپ

پشته یا Stack در سی شارپ یک نوع خطی از ساختار داده است که قادر به ذخیره اشیاء است. پشته یک ساختار داده LIFO یا Last-In-First-Out است، به این معنی که آخرین موردی که در پشته قرار می گیرد اولین موردی است که از پشته خارج می شود.

1٬776 0 1401/03/09

صف (Queue) در سی شارپ

صف (Queue) در سی شارپ یک نوع خطی از ساختار داده است که قادر به ذخیره اشیاء است. Queue یک ساختار داده first-in-first-out یا FIFO است که به این معنی است که اولین مورد اضافه شده به صف اولین موردی است که حذف می شود.

1٬781 0 1401/02/30

تفاوت Hashtable و Dictionary در سی شارپ

در سی شارپ از Hashtable و Dictionary می توان برای ذخیره مجموعه‌ای از داده‌ها، شبیه به List معمولی استفاده کرد. با این تفاوت که Hashtable و Dictionary عناصر را به عنوان جفت Key/Value ذخیره می کنند.در این مقاله به تفاوت های Hashtable و Dictionary پرداخته شده است.

1٬512 1 1401/02/23

Dictionary در سی شارپ

در سی شارپ از دیکشنری ها (Dictionary) می‌توان برای ذخیره مجموعه‌ای از داده‌ها، شبیه به List معمولی استفاده کرد. تفاوت اصلی این است که یک Dictionary می تواند عناصر را به عنوان جفت Key/Value ذخیره کند.Key ها باید منحصر به فرد و نمی توانند null باشند. Value ها می توانند تکراری یا null باشند.

1٬835 3 1401/02/17
نظرات

برای ثبت نظر باید در سایت ثبت نام یا ورود نمایید