خطای سفارشی صفحه (Custom Error) در Asp.Net

در این مقاله قصد داریم در مورد چگونگی مدیریت صفحه ی کاربران ، در زمانی که موقع اجرا سایت ما خطا می دهد ،به صورت پیش فرض خود ویژوال استادیو یک صفحه ی زرد رنگ را در زمان خطا نمایش می دهد، ما می توانیم از خطای سفارشی (CustomErrors) استفاده کنیم.

خطای سفارشی صفحه (Custom Error) در Asp.Net

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

برنامه نویس ها می توانند با استفاده از CustomPage یک صفحه ی بهتر با استفاده از تنظیمات webConfig به کاربران نمایش دهند.

به دو ویژگی نیاز است:

defaultRedirect-1

mode-2

داخل کد Web Config :

    <configuration>  
    <system.web>  
    <compilation debug="true" targetFramework="4.5" />  
    <httpRuntime targetFramework="4.5" />  
    <customErrors mode="" defaultRedirect=""></customErrors>  
    </system.web>  
    </configuration>  

DefaultRedirect:

این خصوصیت کاربر را به صفحه ای می برد که دیگر صفحه ی خطای زرد رنگ را کاربر نبیند.

Mode: 3 حالت بسته به جایی که کاربر بازدید کرده صفحه نمایش را به صورت محلی یا از راه دور وجود دارد.

on-1

off-2

RemoteOnly-3

On:

زمانی که حالت را روی On قرار دهیم صفحه ی نمایش زرد رنگ را به کاربران محلی یا از راه دور  نمایش می دهد.

Off:

صفحه ی زرد رنگ خطا را به کاربران محلی یا از راه دور نمایش می دهد ولی نمایش آن با یک استثنا نمایش داده می شود.

یک فولدر جداگانه برای خطا درست می کنیم و یک وب فرم برای CustomError می سازیم

defaultRedirect و mode در webConfig مقادیر آن ها را تنظیم می کنیم.

برای اینکه خطای سفارشی داشته باشیم می توانید  داخل فایل global.asax کد مربوط به بازگشت صفحه را در متود Application_Error بنویسید.

برای برگرداندن کاربر زمانی که به خطا برخورد کرد می توان از کد زیر استفاده کرد ، هم چنین می توان برای خطاهای http با استفاده از کد statusCode را داخل صفحه کد سفارشی تنظیم کرد.

<customErrors mode="RemoteOnly" defaultRedirect="~/ErrorPages/Oops.aspx">  
<error statusCode="404" redirect="~/ErrorPages/404.aspx" />  
</customErrors>