ম্যাক্সস্প্যান দ্বারা পোস্ট করা উত্তরের ভিত্তিতে, আমি গিটহাবের উপর একটি ন্যূনতম নমুনা প্রকল্প একসাথে রেখেছি সমস্ত কাজের অংশ দেখিয়েছি।
মূলত, ব্যতিক্রমটিকে বাধা দেওয়ার জন্য আমরা কেবলমাত্র Global.asax.cs এ একটি Application_Error
পদ্ধতি যুক্ত করি এবং একটি কাস্টম ত্রুটি পৃষ্ঠায় আমাদের পুনর্নির্দেশের (বা আরও সঠিকভাবে, অনুরোধ স্থানান্তর ) একটি সুযোগ দেই ।
protected void Application_Error(Object sender, EventArgs e)
{
// See http://stackoverflow.com/questions/13905164/how-to-make-custom-error-pages-work-in-asp-net-mvc-4
// for additional context on use of this technique
var exception = Server.GetLastError();
if (exception != null)
{
// This would be a good place to log any relevant details about the exception.
// Since we are going to pass exception information to our error page via querystring,
// it will only be practical to issue a short message. Further detail would have to be logged somewhere.
// This will invoke our error page, passing the exception message via querystring parameter
// Note that we chose to use Server.TransferRequest, which is only supported in IIS 7 and above.
// As an alternative, Response.Redirect could be used instead.
// Server.Transfer does not work (see https://support.microsoft.com/en-us/kb/320439 )
Server.TransferRequest("~/Error?Message=" + exception.Message);
}
}
ত্রুটি নিয়ন্ত্রণকারী:
/// <summary>
/// This controller exists to provide the error page
/// </summary>
public class ErrorController : Controller
{
/// <summary>
/// This action represents the error page
/// </summary>
/// <param name="Message">Error message to be displayed (provided via querystring parameter - a design choice)</param>
/// <returns></returns>
public ActionResult Index(string Message)
{
// We choose to use the ViewBag to communicate the error message to the view
ViewBag.Message = Message;
return View();
}
}
ত্রুটি পৃষ্ঠা দেখুন:
<!DOCTYPE html>
<html>
<head>
<title>Error</title>
</head>
<body>
<h2>My Error</h2>
<p>@ViewBag.Message</p>
</body>
</html>
অন্য কিছুই জড়িত থাকে, তুলনায় নিষ্ক্রিয় / অপসারণ অন্যান্য filters.Add(new HandleErrorAttribute())
মধ্যে FilterConfig.cs
public class FilterConfig
{
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
//filters.Add(new HandleErrorAttribute()); // <== disable/remove
}
}
বাস্তবায়নের জন্য খুব সহজ হলেও, এই পদ্ধতির মধ্যে আমি যে একটি অপূর্ণতা দেখতে পাচ্ছি তা লক্ষ্য ত্রুটি পৃষ্ঠায় ব্যতিক্রম তথ্য সরবরাহ করতে ক্যোরিস্ট্রিং ব্যবহার করছে।