Global.asax এবং Application Level Error Handling

Microsoft Technologies - এএসপি ডট নেট ওয়েব (ASP.Net WP) Error Handling এবং Debugging Techniques |
289
289

ASP.NET Web Forms অ্যাপ্লিকেশনগুলোতে Global.asax ফাইলটি একটি গুরুত্বপূর্ণ ভূমিকা পালন করে। এটি অ্যাপ্লিকেশনের সার্বিক জীবনচক্র (Application Life Cycle) এবং বিভিন্ন ইভেন্ট যেমন অ্যাপ্লিকেশন ইনিশিয়ালাইজেশন, সেশন স্টার্ট, এবং অ্যাপ্লিকেশন এরর হ্যান্ডলিং এর জন্য ব্যবহৃত হয়। বিশেষভাবে Application Level Error Handling এর জন্য Global.asax ফাইলটি ব্যবহার করা হয়। এটি পুরো অ্যাপ্লিকেশন জুড়ে ক্রিটিকাল এরর এবং এক্সেপশন সমাধান করার একটি সাধারণ পদ্ধতি প্রদান করে।


Global.asax কী?

Global.asax (যাকে Application File ও বলা হয়) হল একটি স্পেশাল ফাইল যা ASP.NET অ্যাপ্লিকেশন ডেভেলপমেন্টের সময় একটি ক্লাস হিসেবে ব্যবহার করা হয়। এটি অ্যাপ্লিকেশনের স্তরে নির্দিষ্ট কিছু ইভেন্ট হ্যান্ডল করতে ব্যবহৃত হয়, যেমন অ্যাপ্লিকেশন স্টার্ট, অ্যাপ্লিকেশন শাটডাউন, সেশন স্টার্ট, এবং এরর হ্যান্ডলিং ইত্যাদি।

Global.asax এর সাধারণ কার্যক্রম

  • Application_Start: অ্যাপ্লিকেশন শুরু হলে এটি একবার চলতে থাকে। সাধারণত, অ্যাপ্লিকেশন কনফিগারেশন বা সেটআপ করার জন্য এখানে কোড রাখা হয়।
  • Application_End: অ্যাপ্লিকেশন বন্ধ হওয়ার সময় এটি ট্রিগার হয়। এখানে অ্যাপ্লিকেশন ক্লিনআপ করা যায়।
  • Session_Start: নতুন সেশন শুরু হলে এটি ট্রিগার হয়। সেশনের প্রথমবারের জন্য প্রাথমিক সেটআপ করা যায়।
  • Session_End: সেশন শেষ হলে এটি ট্রিগার হয়।

এছাড়া, Application_Error ইভেন্টের মাধ্যমে অ্যাপ্লিকেশন লেভেল এরর হ্যান্ডলিং করা হয়।


Application Level Error Handling in Global.asax

Application_Error ইভেন্টটি Global.asax ফাইলে থাকে এবং অ্যাপ্লিকেশন জুড়ে যেকোনো আনহ্যান্ডেলড এক্সেপশন (uncaught exception) ধরতে পারে। এই ইভেন্টে আমরা সমস্ত unhandled exceptions ধরতে পারি এবং ব্যবহারকারীদের জন্য একটি সুন্দর ও নিরাপদ ত্রুটি পৃষ্ঠা (error page) দেখাতে পারি।

1. Global.asax ফাইলে Application_Error ইভেন্ট যুক্ত করা

<%@ Application Language="C#" %>

<script runat="server">
    void Application_Error(object sender, EventArgs e)
    {
        // এক্সেপশন হ্যান্ডলিং
        Exception exception = Server.GetLastError();
        
        // লগিং বা কাস্টম এরর পেজ রিডাইরেক্ট করা
        LogError(exception);
        
        // এরর পৃষ্ঠা রিডাইরেক্ট
        Response.Redirect("~/ErrorPage.aspx");
    }

    // লগিং ফাংশন
    private void LogError(Exception ex)
    {
        // এখানে এক্সেপশন লগিং কোড লিখুন, যেমন ডাটাবেস বা ফাইলে
        System.IO.File.AppendAllText(Server.MapPath("~/App_Data/ErrorLog.txt"), ex.Message + "\n");
    }
</script>
  • Application_Error ইভেন্টে আমরা Server.GetLastError() মেথড ব্যবহার করে অ্যাপ্লিকেশন লেভেলের যে কোনো এক্সেপশন সংগ্রহ করি।
  • এর পরে, আমরা সেই এক্সেপশন লগ করতে পারি অথবা ব্যবহারকারীকে একটি কাস্টম এরর পৃষ্ঠায় রিডাইরেক্ট করতে পারি।

Application_Error ব্যবহারের সুবিধা

  1. কেন্দ্রীভূত ত্রুটি ব্যবস্থাপনা: এই ইভেন্টের মাধ্যমে অ্যাপ্লিকেশন জুড়ে ত্রুটি হ্যান্ডলিং করা যায়। কোন নির্দিষ্ট পেজে গিয়ে ত্রুটি হ্যান্ডল করার পরিবর্তে, Global.asax এ এক জায়গায় সবকিছু সেন্ট্রালাইজ করা যায়।
  2. কাস্টম লগিং: এক্সেপশনটি লগ করার জন্য আপনার পছন্দ অনুযায়ী যেকোনো লগিং সিস্টেম ব্যবহার করতে পারেন, যেমন ফাইল সিস্টেম, ডাটাবেস বা অন্য কোনো লগিং সার্ভিস।
  3. কাস্টম এরর পেজ রিডাইরেকশন: ত্রুটির কারণে ব্যবহারকারীকে ডিফল্ট এরর পেজ না দেখিয়ে, কাস্টম এরর পৃষ্ঠায় রিডাইরেক্ট করা সম্ভব, যা ইউজার এক্সপেরিয়েন্স উন্নত করে।

কাস্টম এরর পৃষ্ঠা তৈরি করা

এখন, আমাদের একটি কাস্টম এরর পৃষ্ঠা তৈরি করতে হবে যেখানে Application_Error ইভেন্টে রিডাইরেক্ট করার পর ব্যবহারকারী যাবে।

1. ErrorPage.aspx তৈরি করা

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="ErrorPage.aspx.cs" Inherits="WebApplication.ErrorPage" %>

<!DOCTYPE html>
<html>
<head>
    <title>Error Page</title>
</head>
<body>
    <h2>Something went wrong. Please try again later.</h2>
    <p>Our technical team has been notified.</p>
</body>
</html>

2. ErrorPage.aspx.cs (Code-behind)

using System;

namespace WebApplication
{
    public partial class ErrorPage : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            // এখানে আপনি ব্যবহারকারীকে আরো তথ্য প্রদর্শন করতে পারেন, অথবা এক্সেপশন লগ করতে পারেন।
            Exception ex = Server.GetLastError();
            // এক্সেপশন মেসেজ লগ করা
            System.IO.File.AppendAllText(Server.MapPath("~/App_Data/ErrorLog.txt"), ex.Message + "\n");
        }
    }
}

এখানে, ErrorPage.aspx একটি সাধারণ কাস্টম এরর পৃষ্ঠা যেখানে ব্যবহারকারীকে বলা হবে যে কিছু ভুল হয়েছে এবং টেকনিক্যাল টিম অবগত হয়েছে। এর সাথে, ErrorPage.aspx.cs ফাইলে এক্সেপশন লগ করা হচ্ছে।


Web.config ফাইলের মাধ্যমে Application-Level Error Handling

এছাড়াও, Web.config ফাইলে customErrors সেকশন ব্যবহার করে অ্যাপ্লিকেশন লেভেল এরর হ্যান্ডলিং কনফিগার করা যেতে পারে।

<configuration>
  <system.web>
    <customErrors mode="On" defaultRedirect="~/ErrorPage.aspx">
      <error statusCode="404" redirect="~/NotFound.aspx" />
      <error statusCode="500" redirect="~/ErrorPage.aspx" />
    </customErrors>
  </system.web>
</configuration>
  • customErrors mode="On" সেটিং অ্যাপ্লিকেশন লেভেল এরর হ্যান্ডলিং সক্ষম করে এবং কাস্টম এরর পেজে রিডাইরেক্ট করে।
  • defaultRedirect প্রপার্টি দ্বারা ErrorPage.aspx তে রিডাইরেক্ট করার ব্যবস্থা করা হয়।
  • নির্দিষ্ট HTTP স্ট্যাটাস কোড অনুযায়ী কাস্টম এরর পেজ সেট করা যায় (যেমন 404 বা 500 এর জন্য)।

উপসংহার

Global.asax ফাইল এবং Application_Error ইভেন্ট ASP.NET Web Forms অ্যাপ্লিকেশনের জন্য একটি শক্তিশালী কেন্দ্রীয় ত্রুটি ব্যবস্থাপনা ব্যবস্থা প্রদান করে। এটি অ্যাপ্লিকেশন জুড়ে যেকোনো আনহ্যান্ডেলড এক্সেপশন হ্যান্ডল করতে এবং কাস্টম এরর পেজ প্রদর্শন করতে ব্যবহৃত হয়। এর মাধ্যমে একটি কার্যকরী ত্রুটি সমাধান ব্যবস্থা তৈরি করা সম্ভব যা অ্যাপ্লিকেশন ব্যবহারকারীর জন্য এক নিরাপদ এবং উন্নত এক্সপেরিয়েন্স নিশ্চিত করে।

common.content_added_by
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion