تفاوت در استفاده از endpoints و routes جهت مسیردهی صفحه های پروژه
سلام به همه :-)
دوستان توی dot.net core 3.1 بصورت پیشفرض بجای :
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
});
app.UseMvc(routes =>
{
routes.MapRoute(
name: "areas",
template: "{area:exists}/{controller=Home}/{action=Index}/{id?}");
});
بصورت زیر تغییر کرده:
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
endpoints.MapControllerRoute(
name: "areas",
pattern: "{area:exists}/{controller=Home}/{action=Index}/{id?}");
});
منتها توی این مدل ظاهرا قایده مسیردهی هم تغییر کرده یا چیز دیگه ای ... چون صفحه های توی Areas پیدا نمیکنه و خطای 404 میده چون ترتیب آدرس ریخته به هم
البته من با غیر فعال کردن endpoint ماست مالی کردم داستان رو
ولی اگه روش درست یا توضیحات واسه استفاده از endpoint هست رو لطفا ما رو هم توجیح کنید ... البته یه جستجویی زدم ولی باز چیزی دستگیرم نشد
تشکر
پاسخ هوش مصنوعی
در ASP.NET Core 3.1 و نسخه های بعدی، استفاده از endpoints به جای routes در مسیردهی، تغییرات مهمی به همراه دارد. در اینجا چند نکته برای توضیح این تغییرات و چگونگی استفاده از آن ها ارایه می شود:
1. **ساختار جدید**: در نسخه های جدید ASP.NET Core، API جدیدی به نام Endpoints
معرفی شده که به شما اجازه می دهد تا مسیردهی را با استفاده از MapControllerRoute
و سایر متدها سازماندهی کنید. این کار به شما امکان می دهد که کدهای خود را واضح تر و قابل مدیریت تر نمایید.
2. **ترتیب مسیردهی**: یکی از نکات کلیدی در استفاده از endpoints این است که ترتیب تعریف مسیرها (routes) مهم است. اگر شما مسیری را بعد از مسیری دیگر قرار دهید که ممکن است به آن مسیر اشاره کند، احتمال اینکه مسیر اول پیدا نشود وجود دارد. بنابراین، ترتیب تعریف مسیرهای شما باید طوری باشد که مسیرهای خاص تر قبل از مسیرهای عمومی تر قرار گیرند.
3. **مسیردهی به Areas**: اگر شما از Areas
در پروژه خود استفاده می کنید، باید مطمین شوید که مسیر مربوط به area
برای درخواست های صحیح تعریف شده اند. اطمینان حاصل کنید که نام area
با نام درون Areas
شما مطابقت داشته باشد و همچنین اطمینان حاصل کنید که مسیری که مربوط به area
است، قبل از دیگر مسیرها تعریف شده باشد.
4. **نمونه کد**: برای ایجاد یک مسیردهی درست برای Areas
، می توانید از کد زیر استفاده کنید:
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
name: "areas",
pattern: "{area:exists}/{controller=Home}/{action=Index}/{id?}");
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
});
با رعایت ترتیب تعریف مسیرها و استفاده صحیح از Endpoints
، باید بتوانید مسیردهی به صفحات پروژه تان را به راحتی انجام دهید و مشکلات 404 را حل کنید.
سلام. بله در نسخه Core 3 به بعد میان افزار مربوط به Routing نسبت به نسخه های قبلی کمی تفاوت داشته ولی مدل و ترتیب آدرس دهی تغییری نداشته در مجموع.
در Asp.net core 3 سیستم مسیردهی یا Routing قدری تغییرا داشته و اختصاصی تر شده. شما برای تعریف مسیر و همچنین برای ایجاد مسیر مورد نظر خودتون برای Area باید به شکل زیر عمل کنید
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
});
//For Area
app.UseEndpoints(routes =>
{
routes.MapAreaControllerRoute(
name: "AdminPanel",
areaName: "AdminArea",
pattern: "{area:exists}/{controller=AdminHome}/{action=Index}/{id?}");
});
همونطور که مشاهده می کنید برای تعریف مسیرهای عادی از MapControllerRoute و برای تعریف مسیر Area از MapAreaControllerRoute استفاده میشه. همچنین متد MapAreaControllerRoute دارای 3 متغیر به نام name و areaName و pattern هست که باید مقداردهی بشه.
موفق باشید.
این لینک رو هم میتونید بخونید.
نیازی نیست دو یا چند بار از
app.UseEndpoints
استفاده کنید. شما یه بار app.UseEndpoints رو تعریف میکنید و بعد به تعداد دلخواه endpoint میسازید.
و همچنین هم برای مسیر عادی و هم Area میتونید از MapControllerRoute استفاده کنید. اینجوری کد نویسی سادهتر و تمیزتره.
اینم نمونه اش:
app.UseEndpoints(endpoints =>
{
//------Route For Areas-----------------
endpoints.MapControllerRoute(
name: "areaRoute",
pattern: "{area:exists}/{controller}/{action}",
defaults: new { controller = "Home", action = "Index" });
//------Default Route-----------------
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller}/{action}/{id?}",
defaults: new { controller = "Home", action = "Index" });
});
- آموزش استفاده از پلاگین گردونه شانس در Asp.net core به همراه سورس
- نمایش متن به صورت فرمت شده در CkEditor
- آموزش استفاده از SignalR در Asp.net Core با مثال عملی
- ادغام چند گزارش استیمول سافت بصورت پی دی اف در یک فایل
- نحوه تغییر استایل کامپوننت select2 چگونه است ؟
- چگونه امنیت پروژه را در Asp.net Core افزایش دهیم ؟
- ارسال پارامتر در دستور window.open جی کویری
- ارسال پارامتر از طریق جاوااسکریپت با کلیک روی تگ a
- خطای 500 زمان اجرا شدن پروژه روی هاست
- کویری نویسی در استیمول سافت جهت فیلتر اطلاعات
- کار با CkEditor با قابلیت آپلود عکس
- خطا در ایجاد migration در Asp.net core
- تفاوت های Asp.net core و Asp.net mvc چیه؟
- دلیل اسپم شدن ایمیل های ارسالی از سرور
- نحوه لایه بندی پروژه Core و اضافه کردن به IIS
- ارسال ایمیل در Asp.net core
- آیا میشه در mvc core از کامپونت استفاده کرد
- آپلود فایل در Asp.net core چگونه است؟
- حذف کامل یک رکورد در جدول ریلیشن شده
- اشکال در آپلود فایل ویدیو در mvc core 2