دسته بندی ها
11:11 1398/11/23

Redirect به صفحه خطاها در صورت بروز خطای عدم دسترسی

مشخصات سوال کننده :
کاربر : navid     امتیاز کاربر : 10     رتبه کاربر : 70
دسته بندی : Asp.net Core

به این سوال امتیاز بدهید    0
تعداد بازدید این سوال : 2542
پاسخ دهنده : fateme 12:01 1398/11/23

لطفا کدهایی که‌نوشتید رو قرار بدید. چون اینجوری فقط میشه یه سری کلیات رو گفت و جواب دقیق نمیشه داد اصلا

به این پاسخ امتیاز بدهید    1
امتیاز: 1617 رتبه: 2
پاسخ دهنده : fateme 23:58 1398/11/23

در کلاس Startup.cs میتونید این موارد رو تعیین کنید.

 

حالت اول : اگر میخواید در صورت بروز هر گونه خطا کاربر رو به یک مسیر خاص هدایت کنید و درواقع خطاها رو مدیریت کنید می تونید توی متد Configure از دستور زیر استفاده کنید :

 

      if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }
            else
            {
                app.UseExceptionHandler("/Home/Error");
                app.UseHsts();
            }

 

در کد بالا در کنترلر Home باید یک اکشن به نام Error درست کنید و یک ویو هم به همین نام ایجاد کنید و درون این View متن مورد نظرتون رو در صورت بروز خطا بنویسید. از این ببعد هر خطایی به وجود بیاد این ویو نمایش داده میشه.

 

حالت دوم : نمایش صفحه 404. اگر کاربر مسیری رو وارد کرد که وجود نداشت باید خطای 404 رو نمایش بدید. برای انجام این کار کد زیر رو در Configure بنویسید :

 

 app.Use(async (context, next) =>
       {
           await next();
           if (context.Response.StatusCode == 404)
           {
                context.Request.Path = "/home/err404";
                await next();
           }
        });

 

توی این حالت هم باید در کنترلر Home یک اکشن با نام err404 ایجاد کنید و همچنین یک ویو به همین نام. از این پس هر آدرسی که وجود نداشت درخواست شد صفحه err404 نمایش داده میشه.

 

 

حالت سوم : نمایش صفحه AccessDenied

به صورت پیش فرض وقتی کاربر تقاضای دسترسی به صفحه ای رو میکنه که مجاز نیست سیستم اتوماتیک کاربر رو به مسیر Account/AccessDenied میفرسته. شما باید در کنترلر Account یک اکشن به نام AccessDenied ایجاد کنید و یک ویو به همین نام و متن مورد نظرتون رو داخلش بنویسید تا از این پس اون چیزی که شما میخواید نمایش داده بشه.

می تونید هم البته این مسیر رو به صورت پیش فرض تغییر بدید. برای این منظور در متد Configure کد زیر رو بنویسید

 

app.UseStatusCodePages(async context => {
  if (context.HttpContext.Response.StatusCode == 403)
  {
     // your redirect
  }
});

 

این لینک هم در مورد همین موضوع هست

موفق باشید

به این پاسخ امتیاز بدهید    1
امتیاز: 1617 رتبه: 2
پاسخ دهنده : navid 09:55 1398/11/24

تشکر حل شد

روش 2 اجرا میشه همیشه و 3 اجرا نمیشه

به این پاسخ امتیاز بدهید    0
امتیاز: 10 رتبه: 70
پاسخ دهنده : fateme 10:56 1398/11/24

خیلی عالی

چجوری حلش کردید ؟ با روش ۲ یا کار دیگه ای انجام‌دادید ؟

به این پاسخ امتیاز بدهید    0
امتیاز: 1617 رتبه: 2
پاسخ دهنده : navid 11:06 1398/11/24

با روش 2 شما مورد حل شد

 

ویرایش شده در پنج شنبه 24 بهمن 1398 ساعت 11:14:29
به این پاسخ امتیاز بدهید    1
امتیاز: 10 رتبه: 70
برای ارسال پاسخ لطفا وارد حساب کاربری خود شوید.   ورود