دسته بندی ها
17:45 1399/08/09

دلیل خطای Http Error 404 در Asp.net Core

مشخصات سوال کننده :
کاربر : mahbod     امتیاز کاربر : 3     رتبه کاربر : 136
دسته بندی : Asp.net Core

به این سوال امتیاز بدهید    0
تعداد بازدید این سوال : 2605
هوش مصنوعی

پاسخ هوش مصنوعی

خطای HTTP 404 به این معناست که آدرس URL مورد نظر شما پیدا نشد. در ASP.NET Core، دلایل متعددی می توانند باعث این خطا شوند:

1. **مسیر اشتباه**: ممکن است کنترلر یا اکشن ای که می خواهید به آن دسترسی پیدا کنید وجود نداشته باشد یا نام آن اشتباه نوشته شده باشد. حتماً نام کنترلر و اکشن را بررسی کنید.

2. **عدم تعریف مسیر**: اگر از ویژگی areas استفاده می کنید، مطمین شوید که ناحیه (Area) مورد نظر تعریف شده و مسیر مربوط به آن در Startup.cs ثبت شده است.

3. **خطای پیکربندی**: در فایل Startup.cs حتماً اطمینان حاصل کنید که متد UseEndpoints به درستی پیکربندی شده است.

مثال از نحوه افزودن ناحیه (Area) در Startup.cs:

app.UseEndpoints(endpoints =>
{
    endpoints.MapControllerRoute(
        name: "default",
        pattern: "{controller=Home}/{action=Index}/{id?}");

    endpoints.MapAreaControllerRoute(
        name: "AdminPanel",
        areaName: "AdminPanel",
        pattern: "AdminPanel/{controller=Home}/{action=Index}/{id?}");
});

4. **پیکربندی روتینگ**: اطمینان حاصل کنید که routing به درستی تنظیم شده باشد.

بررسی این نکات می تواند به شما کمک کند تا مشخص کنید که چرا خطای 404 در زمان ارسال فرم به وجود می آید.

به این پاسخ امتیاز بدهید    0
امتیاز: - رتبه: -
پاسخ دهنده : saedbfd 17:28 1399/08/10

دلیل خطای Http Error 404

خطای شما در این لینک قبلا بهش پاسخ داده شده. اما مجددا یک توضیحی براتون میدم. دستوراتی که شما در view نوشتید ظاهرا درست هست.

<form asp-area="AdminPanel" asp-controller="Category" asp-action="Create" method="post">
   ...
</form>

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

https://localhost:44309/AdminPanel/Category/Create

اما اگر خطای Http Error 404 دریافت می کنید احتمالا خطا در جای دیگه ای هست. بنابراین موارد زیر رو به ترتیب چک کنید.

 

تعریف مسیر در فایل startup.cs در Asp.net Core

خب اول باید مطمئن بشید که در فایل startup.cs و در متد Configure مسیر برای AdminPanel تعریف کردید. در کدهای زیر این کار رو انجام دادیم.

app.UseMvc(routes =>
   {
       routes.MapRoute(
          name: "default",
          template: "{controller=Home}/{action=Index}/{id?}");
    });

//For Area
app.UseMvc(routes =>
   {
       routes.MapRoute(
          name: "AdminPanel",
          template: "{area:exists}/{controller=Home}/{action=Index}/{id?}");
   });

در کدهای بالا یک Area به نام AdminPanel و یک مسیر برای این ناحیه تعریف کردیم. دقت کنید این کدها برای Core نسخه 2.2 می باشد. (مسیریابی در Core 2 و Core 3)

 

تعریف Attribute مربوط به Area در بالای کنترلر

در مرحله بعد وقتی مطمئن شدید که مسیر Area به درستی تعریف شده حالا باید مطمئن بشید که در بالای کنترلر از Atrribute مربوط به Area استفاده کردید.

 

[Area("AdminPanel")]
public class CategoryController : Controller
{
   [HttpPost]
   public IActionResult Create(Category model)
   {
       return View();
   }
}

 

همچنین دقت کنید که حتما در کنترلر یک اکشن با نام Create و با ویژگی HttpPost باید داشته باشید.

ویرایش شده در شنبه 10 آبان 1399 ساعت 18:11:22
به این پاسخ امتیاز بدهید    0
امتیاز: 1664 رتبه: 1
برای ارسال پاسخ لطفا وارد حساب کاربری خود شوید.   ورود