рд╣рдо рд╕рднреА рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ ASP.NET MVC рдореЗрдВ рдРрд╕реА рд╡рд┐рд╢реЗрд╖рддрд╛
HandleErrorAttribute
, рдЬрд┐рд╕реЗ MSDN рдореЗрдВ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ
рдПрдХ рдПрдХреНрд╢рди рд╡рд┐рдзрд┐ рджреНрд╡рд╛рд░рд╛ рдЙрдард╛рдП рдЧрдП рдЕрдкрд╡рд╛рдж рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рд╡рд┐рд╢реЗрд╖рддрд╛ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддрд╛ рд╣реИред
рд▓реЗрдХрд┐рди рдХрд╣реАрдВ рднреА, рдПрдХ рд╣реА MSDN рдореЗрдВ рдпрд╣ рдирд╣реАрдВ рдХрд╣рд╛ рдЧрдпрд╛ рд╣реИ (
рдореБрдЭреЗ рдЕрдкрдиреА рдирд╛рдХ рдХреЗ рд╕рд╛рде рдкреНрд░рд╣рд╛рд░ рдХрд░реЗрдВ, рд▓рд┐рдВрдХ рджреЗрдВ рдЬрд╣рд╛рдВ рдпрд╣ рд▓рд┐рдЦрд╛ рд╣реИ рдЕрдЧрд░ рдореИрдВрдиреЗ рджреЗрдЦрд╛) рддреЛ рдпрд╣ рдХреЗрд╡рд▓ рдЕрдкрд╡рд╛рджреЛрдВ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬреЛ рд╕рд░реНрд╡рд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЛрдб рдХреЛ 500 рдкрд░ рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВред
HandleErrorAttribute
рдХреЗ рд╕реНрд░реЛрдд рдХреЛрдб рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд▓рд╛рдЗрдиреЗрдВ рд╣реИрдВ:
рдореБрдЭреЗ рдЖрдкрдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрддрд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдкрд╡рд╛рдж рд╣реЛрдиреЗ рдкрд░ рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ, рддрд╛рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╢реЗрд╖ рдкреГрд╖реНрда рджреЗрдЦреЗрдВ, рди рдХрд┐ "рдореМрдд рдХрд╛ рдкреАрд▓рд╛ рдкреГрд╖реНрда" рдпрд╛ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдХреИрд╕реЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕рд░реНрд╡рд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЛрдб рдХреЗ рд╕рд╛рде рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдорд╛рдирдХ рдкреГрд╖реНрда рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ (рдпрд╣ Web.config рдореЗрдВ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ) рд▓реЗрдХрд┐рди рдЙрд╕ рдкрд░ рдФрд░ рдмрд╛рдж рдореЗрдВ)ред
рдЕрдкрдиреА рдЦреБрдж рдХреА рдЕрдиреБрд░реВрдк HandleErrorAttribute
рдмрдирд╛рдирд╛
рдЗрд╕рд▓рд┐рдП, рд╣рдореЗрдВ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рдорд╛рдирдХ
HandleErrorAttribute
рд╣рдореЗрдВ рд╕реВрдЯ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдареАрдХ рд╣реИ, рдЪрд▓реЛ рдЕрдкрдирд╛ рдЦреБрдж рдХрд╛ рдмрдирд╛рдПрдВред
IExceptionFilter
, рдЖрдк
IExceptionFilter
рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╕реЗ рдЗрд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдПрдХ рд╡рд░реНрдЧ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рд╣рдо рдорд╛рдирдХ
IExceptionFilter
рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рд╕реЗ рдЦреБрд╢ рд╣реИрдВ рдЕрдЧрд░ рдпрд╣ рд╕рднреА рдЕрдкрд╡рд╛рджреЛрдВ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рддрд╛ рд╣реИред рдФрд░ рдЪреВрдВрдХрд┐ рд▓рдЧрднрдЧ рд╕рдм рдХреБрдЫ рд╣рдореЗрдВ рд╕реВрдЯ рдХрд░рддрд╛ рд╣реИ, рд╣рдорд╛рд░реА рдХрдХреНрд╖рд╛ рд╣рдореЗрдВ
HandleErrorAttribute
рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓реЗрдЧреА рдЬреЛ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдЖрдкрддреНрддрд┐рдЬрдирдХ рд╣реИред
public class HandleAllErrorAttribute : HandleErrorAttribute { public override void OnException(ExceptionContext filterContext) { if (filterContext == null) { throw new ArgumentNullException("filterContext"); }
рдЗрд╕рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдХрд╣реВрдВрдЧрд╛ рдХрд┐ рдпрд╣ рдХреБрдЫ
HandleErrorAttribute
рдХреЗ рдЕрдкрд╡рд╛рдж рдХреЗ рд╕рд╛рде рдорд╛рдирдХ
HandleErrorAttribute
рдХреЛрдб рд╣реИ, рдЬреЛ рдХрд┐
HttpStatusCode
рдЬрд╛рдВрдЪ рдХрд░рддрд╛ рд╣реИред
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╡рд╣ рдХреНрдпрд╛ рдХрд░рддрд╛ рд╣реИ:
- рд╡реИрдзрддрд╛ рдХреЗ рд▓рд┐рдП рдЗрдирдкреБрдЯ рдорд╛рдкрджрдВрдбреЛрдВ рдХреА рдЬрд╛рдБрдЪ рдХрд░рддрд╛ рд╣реИ
customErrors
рд╣реИрдВ, рддреЛ рдЬрд╛рдБрдЪ рдХрд░рддрд╛ рд╣реИHandleErrorInfo
рд╕рд╛рде HandleErrorInfo
рд╡рд░реНрдЧ рдХреЛ рднрд░рддрд╛ рд╣реИ- рдПрдХ рдирдпрд╛
ViewResult
рдмрдирд╛рддрд╛ рд╣реИ, рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рднрд░рддрд╛ рд╣реИ рдФрд░ рд╡рд░реНрддрдорд╛рди рдХреЗ рдмрдЬрд╛рдп рдЕрд╕рд╛рдЗрди рдХрд░рддрд╛ рд╣реИ - рд╕рд░реНрд╡рд░ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рджреВрд░ рдХрд░рддрд╛ рд╣реИ рдФрд░ рд╕рд░реНрд╡рд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЛрдб рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ
рд╣рдорд╛рд░реА рдХрдХреНрд╖рд╛ рддреИрдпрд╛рд░ рд╣реИ, рдЕрдм рд╣рдо рдорд╛рдирдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЛ рд╣рдорд╛рд░реЗ рд╕рд╛рде рдмрджрд▓ рджреЗрдВрдЧреЗред рд╣рдо рдЗрд╕реЗ рд╡реИрд╢реНрд╡рд┐рдХ рдлрд╝рд┐рд▓реНрдЯрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд░рддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рд╣рдо рдЗрд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдирд┐рдпрдВрддреНрд░рдХ рдпрд╛ рдирд┐рдпрдВрддреНрд░рдХ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдореЗрдВ рди рд▓рд┐рдЦреЗрдВред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпрд╣ рдХрд╛рдо рдореЗрдВ рдЖ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рд╣рдо
Global.asax.cs рдкрд░ рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рдорд╛рдирдХ рдлрд╝рд┐рд▓реНрдЯрд░ рдХреЗ рдмрдЬрд╛рдп рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВ, рд╣рдорд╛рд░реА рдЕрднреА-рдЕрднреА рдмрдиреА рд╡рд┐рд╢реЗрд╖рддрд╛:
filters.Add(new HandleAllErrorAttribute());
рдХрд╕реМрдЯреА
рдЕрдм, рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рд╣рдорд╛рд░рд╛ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдФрд░ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдбреЗрдЯрд╛ рдкрд╛рд╕ рдХрд░рддрд╛ рд╣реИ, рд╣рдо рдорд╛рдирдХ
~ / рджреГрд╢реНрдп / рд╕рд╛рдЭрд╛ / Error.cshtml рдХреЛ рдереЛрдбрд╝рд╛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░реЗрдВрдЧреЗ :
@model System.Web.Mvc.HandleErrorInfo @{ ViewBag.Title = "Error"; } <h2> Sorry, an error occurred while processing your request. </h2> <h3>@Model.Exception.Message</h3>
рдФрд░
Web.config (рдЬреЛ рд░реВрдЯ рдкрд░ рд╕реНрдерд┐рдд рд╣реИ) рдореЗрдВ
System.Web
рд╕реЗрдХреНрд╢рди рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд▓рд╛рдЗрди рдЬреЛрдбрд╝реЗрдВ:
<customErrors mode="On" defaultRedirect="Error" />
рдЗрд╕ рдкрдВрдХреНрддрд┐ рдХреЗ рд╕рд╛рде, рд╣рдо рдХрд╕реНрдЯрдо рддреНрд░реБрдЯрд┐ рд╣реИрдВрдбрд▓рд┐рдВрдЧ, рдФрд░ рдЕрдзрд┐рдХ рд╕рдЯреАрдХ, рдХрд╕реНрдЯрдо рддреНрд░реБрдЯрд┐ рдкреГрд╖реНрдареЛрдВ рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рддреЗ рд╣реИрдВред
рдЕрдм рд╣рдореЗрдВ рдПрдХ рдЕрдкрд╡рд╛рдж рдмрдврд╝рд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдореИрдВ рдорд╛рдирдХ рдирд┐рдпрдВрддреНрд░рдХ (рд╕реНрдЯреВрдбрд┐рдпреЛ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрдорд┐рдд) рдХреА рдХрд╛рд░реНрд░рд╡рд╛рдИ рдореЗрдВ рдпрд╣ рдХрд░реВрдВрдЧрд╛:
public ActionResult About() { throw new HttpException(403, " !"); return View(); }
рд╡рд╣ рд╕рдм рд╣реИ! рд╣рдо рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ, "рдЕрдмрд╛рдЙрдЯ" рдЕрдиреБрднрд╛рдЧ рдкрд░ рдЬрд╛рдПрдВ рдФрд░ рджреЗрдЦреЗрдВ рдХрд┐ рд╣рдорд╛рд░реА рд╡рд┐рд╢реЗрд╖рддрд╛ рдиреЗ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рдХрд╛рдо рдХрд┐рдпрд╛ рд╣реИред
