আমি একটি এমভিসি 3 বেস ওয়েবসাইট বিকাশ করছি এবং আমি ত্রুটিগুলি পরিচালনা করার জন্য সমাধান এবং প্রতিটি ধরণের ত্রুটির জন্য কাস্টম ভিউ রেন্ডার খুঁজছি। সুতরাং কল্পনা করুন যে আমার কাছে একটি "ত্রুটি" নিয়ামক রয়েছে যেখানে তার প্রধান ক্রিয়াটি "সূচক" (জেনেরিক ত্রুটি পৃষ্ঠা) এবং ব্যবহারকারীকে "হ্যান্ডল 500" বা "হ্যান্ডেলএকশন নটফাউন্ড" এর মতো প্রদর্শিত হতে পারে এমন ত্রুটিগুলির জন্য এই নিয়ামকটির আরও কয়েকটি ক্রিয়া থাকবে।
সুতরাং ওয়েবসাইটে ঘটে যাওয়া প্রতিটি ত্রুটি এই "ত্রুটি" নিয়ামক (উদাহরণস্বরূপ: "কন্ট্রোলার" বা "অ্যাকশন" পাওয়া যায়নি, 500, 404, ডিবি এক্সেপশন, ইত্যাদি) দ্বারা পরিচালিত হতে পারে।
আমি ওয়েবসাইটের পাথগুলি নির্ধারণ করতে (এবং রুট নয়) সাইটম্যাপ ফাইলটি ব্যবহার করছি।
এই প্রশ্নের উত্তর ইতিমধ্যে দেওয়া হয়েছিল, এটি জুইবজের একটি উত্তর
আমার চূড়ান্ত অ্যাপ্লিকেশন_অরর পদ্ধতিটি হল:
protected void Application_Error() {
//while my project is running in debug mode
if (HttpContext.Current.IsDebuggingEnabled && WebConfigurationManager.AppSettings["EnableCustomErrorPage"].Equals("false"))
{
Log.Logger.Error("unhandled exception: ", Server.GetLastError());
}
else
{
try
{
var exception = Server.GetLastError();
Log.Logger.Error("unhandled exception: ", exception);
Response.Clear();
Server.ClearError();
var routeData = new RouteData();
routeData.Values["controller"] = "Errors";
routeData.Values["action"] = "General";
routeData.Values["exception"] = exception;
IController errorsController = new ErrorsController();
var rc = new RequestContext(new HttpContextWrapper(Context), routeData);
errorsController.Execute(rc);
}
catch (Exception e)
{
//if Error controller failed for same reason, we will display static HTML error page
Log.Logger.Fatal("failed to display error page, fallback to HTML error: ", e);
Response.TransmitFile("~/error.html");
}
}
}