{"id":23878,"date":"2023-05-19T12:43:51","date_gmt":"2023-05-19T09:13:51","guid":{"rendered":"https:\/\/nabfollower.com\/blog\/dynamic-error-pages-in-umbraco-10-19l3\/"},"modified":"2023-05-19T12:43:51","modified_gmt":"2023-05-19T09:13:51","slug":"dynamic-error-pages-in-umbraco-10-19l3","status":"publish","type":"post","link":"https:\/\/nabfollower.com\/blog\/dynamic-error-pages-in-umbraco-10-19l3\/","title":{"rendered":"\u0627\u0648\u0647!  \u062e\u0637\u0627\u06cc\u06cc \u06a9\u0647 \u062a\u0648\u0627\u0646\u0633\u062a \u0628\u0647 \u0635\u0648\u0631\u062a \u0645\u062e\u0641\u06cc\u0627\u0646\u0647 \u0648\u0627\u0631\u062f \u062a\u0648\u0644\u06cc\u062f \u0634\u0648\u062f\u060c \u0686\u0647 \u06a9\u0627\u0631 \u06a9\u0646\u06cc\u0645\u061f"},"content":{"rendered":"<div data-article-id=\"1470807\" id=\"article-body\">\n<p>\u06cc\u06a9 \u0635\u0641\u062d\u0647 \u062e\u0637\u0627\u06cc \u062e\u0648\u0628 \u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u06cc\u06a9 \u062a\u062c\u0631\u0628\u0647 \u06a9\u0627\u0631\u0628\u0631\u06cc \u0646\u0627\u062e\u0648\u0634\u0627\u06cc\u0646\u062f \u0631\u0627 \u0628\u0647 \u0686\u06cc\u0632\u06cc \u0628\u0647\u062a\u0631 \u062a\u0628\u062f\u06cc\u0644 \u06a9\u0646\u062f\u060c \u062d\u062a\u06cc \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u0628\u0627\u0639\u062b \u062e\u0646\u062f\u0647 \u0634\u0648\u062f.  \u062f\u0631 \u0627\u06cc\u0646 \u0645\u0642\u0627\u0644\u0647\u060c \u0627\u0628\u0632\u0627\u0631\u0647\u0627\u06cc\u06cc \u0631\u0627 \u06a9\u0647 .NET 6 \u0648 Umbraco 10 \u0627\u0631\u0627\u0626\u0647 \u0645\u06cc\u200c\u062f\u0647\u0646\u062f \u0628\u0631\u0631\u0633\u06cc \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645 \u0648 \u06cc\u06a9 \u0635\u0641\u062d\u0647 \u062e\u0637\u0627 \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645 \u06a9\u0647 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u062f \u062a\u0648\u0633\u0637 \u0648\u06cc\u0631\u0627\u06cc\u0634\u06af\u0631\u0647\u0627\u06cc \u0645\u062d\u062a\u0648\u0627 \u0628\u0627 \u06cc\u06a9 \u0628\u0627\u0632\u06af\u0634\u062a \u062b\u0627\u0628\u062a \u0648\u06cc\u0631\u0627\u06cc\u0634 \u0634\u0648\u062f\u060c \u0627\u06af\u0631 \u0627\u0648\u0636\u0627\u0639 \u0648\u0627\u0642\u0639\u0627\u064b \u0628\u062f \u0628\u0627\u0634\u062f.<\/p>\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_85 counter-hierarchy ez-toc-counter-rtl ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">\u0641\u0647\u0631\u0633\u062a \u0645\u0637\u0627\u0644\u0628<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"\u062a\u063a\u06cc\u06cc\u0631 \u0648\u0636\u0639\u06cc\u062a \u0641\u0647\u0631\u0633\u062a \u0645\u0637\u0627\u0644\u0628\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/nabfollower.com\/blog\/dynamic-error-pages-in-umbraco-10-19l3\/#%DA%A9%D8%A7%D8%B1%DB%8C_%DA%A9%D9%87_%D9%82%D8%B1%D8%A7%D8%B1%D9%87_%D8%A7%D9%86%D8%AC%D8%A7%D9%85_%D8%A8%D8%AF%DB%8C%D9%85\" >\u06a9\u0627\u0631\u06cc \u06a9\u0647 \u0642\u0631\u0627\u0631\u0647 \u0627\u0646\u062c\u0627\u0645 \u0628\u062f\u06cc\u0645<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/nabfollower.com\/blog\/dynamic-error-pages-in-umbraco-10-19l3\/#%D9%82%D8%A8%D9%84_%D8%A7%D8%B2_%D8%A7%DB%8C%D9%86%DA%A9%D9%87_%D8%B4%D8%B1%D9%88%D8%B9_%DA%A9%D9%86%DB%8C%D9%85\" >\u0642\u0628\u0644 \u0627\u0632 \u0627\u06cc\u0646\u06a9\u0647 \u0634\u0631\u0648\u0639 \u06a9\u0646\u06cc\u0645<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/nabfollower.com\/blog\/dynamic-error-pages-in-umbraco-10-19l3\/#%D9%85%D8%B1%D8%AD%D9%84%D9%87_1_%DA%A9%D9%86%D8%AA%D8%B1%D9%84_%DA%A9%D9%86%D9%86%D8%AF%D9%87_%D8%A7%D8%B3%D8%AA%D8%AB%D9%86%D8%A7_%D8%B1%D8%A7_%D8%A7%D8%B6%D8%A7%D9%81%D9%87_%DA%A9%D9%86%DB%8C%D8%AF\" >\u0645\u0631\u062d\u0644\u0647 1: \u06a9\u0646\u062a\u0631\u0644 \u06a9\u0646\u0646\u062f\u0647 \u0627\u0633\u062a\u062b\u0646\u0627 \u0631\u0627 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/nabfollower.com\/blog\/dynamic-error-pages-in-umbraco-10-19l3\/#%D9%85%D8%B1%D8%AD%D9%84%D9%87_2_%D8%A7%DB%8C%D8%AC%D8%A7%D8%AF_%DB%8C%DA%A9_%D9%85%D8%AD%D8%AA%D9%88%D8%A7_%DB%8C%D8%A7%D8%A8\" >\u0645\u0631\u062d\u0644\u0647 2: \u0627\u06cc\u062c\u0627\u062f \u06cc\u06a9 \u0645\u062d\u062a\u0648\u0627 \u06cc\u0627\u0628<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/nabfollower.com\/blog\/dynamic-error-pages-in-umbraco-10-19l3\/#%D9%85%D8%B1%D8%AD%D9%84%D9%87_3_%D8%B2%D9%85%DB%8C%D9%86%D9%87_%D8%B1%D8%A7_%D8%A8%D8%B1%D8%A7%DB%8C_%D8%B1%D8%B3%DB%8C%D8%AF%DA%AF%DB%8C_%D8%A8%D9%87_%D8%AE%D8%B7%D8%A7_%D8%A2%D9%85%D8%A7%D8%AF%D9%87_%DA%A9%D9%86%DB%8C%D8%AF\" >\u0645\u0631\u062d\u0644\u0647 3: \u0632\u0645\u06cc\u0646\u0647 \u0631\u0627 \u0628\u0631\u0627\u06cc \u0631\u0633\u06cc\u062f\u06af\u06cc \u0628\u0647 \u062e\u0637\u0627 \u0622\u0645\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/nabfollower.com\/blog\/dynamic-error-pages-in-umbraco-10-19l3\/#%D9%85%D8%B1%D8%AD%D9%84%D9%87_4_%DB%8C%DA%A9_%D8%B5%D9%81%D8%AD%D9%87_%D8%AE%D8%B7%D8%A7%DB%8C_%D8%A8%D8%A7%D8%B2%DA%AF%D8%B4%D8%AA%DB%8C_%D8%AB%D8%A7%D8%A8%D8%AA_%D8%A7%D8%B6%D8%A7%D9%81%D9%87_%DA%A9%D9%86%DB%8C%D8%AF\" >\u0645\u0631\u062d\u0644\u0647 4: \u06cc\u06a9 \u0635\u0641\u062d\u0647 \u062e\u0637\u0627\u06cc \u0628\u0627\u0632\u06af\u0634\u062a\u06cc \u062b\u0627\u0628\u062a \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/nabfollower.com\/blog\/dynamic-error-pages-in-umbraco-10-19l3\/#%D9%85%D8%B1%D8%AD%D9%84%D9%87_5_%D8%A7%D8%B7%D9%85%DB%8C%D9%86%D8%A7%D9%86_%D8%A7%D8%B2_%DA%A9%D8%AF_%D9%88%D8%B6%D8%B9%DB%8C%D8%AA_500_%D8%AF%D8%B1_%D8%B5%D9%81%D8%AD%D8%A7%D8%AA_%D8%AE%D8%B7%D8%A7\" >\u0645\u0631\u062d\u0644\u0647 5: \u0627\u0637\u0645\u06cc\u0646\u0627\u0646 \u0627\u0632 \u06a9\u062f \u0648\u0636\u0639\u06cc\u062a 500 \u062f\u0631 \u0635\u0641\u062d\u0627\u062a \u062e\u0637\u0627<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/nabfollower.com\/blog\/dynamic-error-pages-in-umbraco-10-19l3\/#%D9%85%D8%B2%D8%A7%DB%8C%D8%A7\" >\u0645\u0632\u0627\u06cc\u0627<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/nabfollower.com\/blog\/dynamic-error-pages-in-umbraco-10-19l3\/#%D8%A7%D9%81%DA%A9%D8%A7%D8%B1_%D9%86%D9%87%D8%A7%DB%8C%DB%8C\" >\u0627\u0641\u06a9\u0627\u0631 \u0646\u0647\u0627\u06cc\u06cc<\/a><\/li><\/ul><\/nav><\/div>\n<h2><span class=\"ez-toc-section\" id=\"%DA%A9%D8%A7%D8%B1%DB%8C_%DA%A9%D9%87_%D9%82%D8%B1%D8%A7%D8%B1%D9%87_%D8%A7%D9%86%D8%AC%D8%A7%D9%85_%D8%A8%D8%AF%DB%8C%D9%85\"><\/span>\n<p>  \u06a9\u0627\u0631\u06cc \u06a9\u0647 \u0642\u0631\u0627\u0631\u0647 \u0627\u0646\u062c\u0627\u0645 \u0628\u062f\u06cc\u0645<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc \u0635\u0641\u062d\u0627\u062a \u062e\u0637\u0627\u06cc \u067e\u0648\u06cc\u0627 \u062f\u0634\u0648\u0627\u0631 \u0646\u06cc\u0633\u062a\u060c \u0627\u0645\u0627 \u0686\u0646\u062f \u0645\u0631\u062d\u0644\u0647 \u0637\u0648\u0644 \u0645\u06cc \u06a9\u0634\u062f.  \u0627\u06af\u0631 \u0627\u06cc\u0646 \u0622\u0645\u0648\u0632\u0634 \u0631\u0627 \u062f\u0646\u0628\u0627\u0644 \u06a9\u0646\u06cc\u062f\u060c \u0645\u0648\u0627\u0631\u062f \u0632\u06cc\u0631 \u0631\u0627 \u0627\u0646\u062c\u0627\u0645 \u062e\u0648\u0627\u0647\u06cc\u062f \u062f\u0627\u062f:<\/p>\n<ol>\n<li>\u0628\u0631\u0627\u06cc \u0648\u0631\u0648\u062f \u0645\u062c\u062f\u062f \u0628\u0647 \u062e\u0637 \u0644\u0648\u0644\u0647 \u0645\u06cc\u0627\u0646 \u0627\u0641\u0632\u0627\u0631 \u062f\u0631 \u0635\u0648\u0631\u062a \u062e\u0637\u0627\u060c \u06cc\u06a9 \u06a9\u0646\u062a\u0631\u0644 \u06a9\u0646\u0646\u062f\u0647 \u0627\u0633\u062a\u062b\u0646\u0627 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f<\/li>\n<li>\u06cc\u06a9 \u0645\u062d\u062a\u0648\u0627 \u06cc\u0627\u0628 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f \u062a\u0627 \u0635\u0641\u062d\u0647 \u062e\u0637\u0627\u06cc Umbraco \u0631\u0627 \u062f\u0631 \u0647\u0646\u06af\u0627\u0645 \u0648\u0631\u0648\u062f \u0645\u062c\u062f\u062f \u067e\u06cc\u062f\u0627 \u06a9\u0646\u06cc\u062f<\/li>\n<li>\u06cc\u06a9 \u0645\u06cc\u0627\u0646 \u0627\u0641\u0632\u0627\u0631 \u0627\u0636\u0627\u0641\u06cc \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f \u062a\u0627 \u067e\u0633 \u0627\u0632 \u0648\u0631\u0648\u062f \u0645\u062c\u062f\u062f\u060c \u0632\u0645\u06cc\u0646\u0647 \u0631\u0627 \u067e\u0627\u06a9\u0633\u0627\u0632\u06cc \u06a9\u0646\u06cc\u062f<\/li>\n<li>\u06cc\u06a9 \u0645\u06cc\u0627\u0646\u200c\u0627\u0641\u0632\u0627\u0631 \u06a9\u0646\u062a\u0631\u0644\u200c\u06a9\u0646\u0646\u062f\u0647 \u0627\u0633\u062a\u062b\u0646\u0627 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u062f\u0631 \u0635\u0648\u0631\u062a \u0634\u06a9\u0633\u062a \u0635\u0641\u062d\u0647 \u062e\u0637\u0627\u06cc \u067e\u0648\u06cc\u0627 \u0628\u0647 \u0635\u0641\u062d\u0647 \u062e\u0637\u0627\u06cc \u062b\u0627\u0628\u062a \u0628\u0627\u0632\u0645\u06cc\u200c\u06af\u0631\u062f\u062f.<\/li>\n<li>\u06cc\u06a9 \u0645\u06cc\u0627\u0646 \u0627\u0641\u0632\u0627\u0631 \u0627\u0636\u0627\u0641\u06cc \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f \u062a\u0627 \u0645\u0637\u0645\u0626\u0646 \u0634\u0648\u06cc\u062f \u06a9\u0647 \u0635\u0641\u062d\u0647 \u062e\u0637\u0627\u06cc \u0627\u0633\u062a\u0627\u062a\u06cc\u06a9 \u0628\u0627 \u06a9\u062f \u0648\u0636\u0639\u06cc\u062a 500 \u0627\u0631\u0627\u0626\u0647 \u0645\u06cc \u0634\u0648\u062f<\/li>\n<\/ol>\n<h2><span class=\"ez-toc-section\" id=\"%D9%82%D8%A8%D9%84_%D8%A7%D8%B2_%D8%A7%DB%8C%D9%86%DA%A9%D9%87_%D8%B4%D8%B1%D9%88%D8%B9_%DA%A9%D9%86%DB%8C%D9%85\"><\/span>\n<p>  \u0642\u0628\u0644 \u0627\u0632 \u0627\u06cc\u0646\u06a9\u0647 \u0634\u0631\u0648\u0639 \u06a9\u0646\u06cc\u0645<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u0628\u0631\u0627\u06cc \u0627\u0647\u062f\u0627\u0641 \u062a\u0635\u0648\u06cc\u0631\u06cc\u060c \u0645\u0627 \u0628\u0647 \u0633\u0631\u0639\u062a \u06cc\u06a9 \u0635\u0641\u062d\u0647 \u0631\u0627 \u0645\u06cc \u0634\u06a9\u0646\u06cc\u0645\u060c \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u0645 \u0628\u0628\u06cc\u0646\u06cc\u0645 \u06a9\u0647 \u0645\u06cc\u0627\u0646 \u0627\u0641\u0632\u0627\u0631 \u062e\u0637\u0627 \u0686\u06af\u0648\u0646\u0647 \u0639\u0645\u0644 \u0645\u06cc \u06a9\u0646\u062f.  \u0645\u0646 \u0642\u0635\u062f \u062f\u0627\u0631\u0645 \u06cc\u06a9 \u0648\u0628 \u0633\u0627\u06cc\u062a \u0627\u0648\u0644\u06cc\u0647 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u0645 \u0648 \u06a9\u06cc\u062a \u0634\u0631\u0648\u0639 \u062a\u0645\u06cc\u0632 \u0631\u0627 \u0646\u0635\u0628 \u06a9\u0646\u0645.  \u0633\u067e\u0633 \u0645\u0633\u06cc\u0631 \u0635\u0641\u062d\u0647 \u062a\u0645\u0627\u0633 \u0631\u0627 \u0628\u0627 \u0627\u06cc\u0646 \u06a9\u0646\u062a\u0631\u0644\u0631 \u0631\u0628\u0648\u062f\u0645:<\/p>\n<p><em>ContactController.cs<\/em><\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight csharp\"><code><span class=\"k\">public<\/span> <span class=\"k\">class<\/span> <span class=\"nc\">ContactController<\/span> <span class=\"p\">:<\/span> <span class=\"n\">RenderController<\/span>\n<span class=\"p\">{<\/span>\n    <span class=\"k\">public<\/span> <span class=\"nf\">ContactController<\/span><span class=\"p\">(<\/span>\n        <span class=\"n\">ILogger<\/span><span class=\"p\">&lt;<\/span><span class=\"n\">RenderController<\/span><span class=\"p\">&gt;<\/span> <span class=\"n\">logger<\/span><span class=\"p\">,<\/span>\n        <span class=\"n\">ICompositeViewEngine<\/span> <span class=\"n\">compositeViewEngine<\/span><span class=\"p\">,<\/span>\n        <span class=\"n\">IUmbracoContextAccessor<\/span> <span class=\"n\">umbracoContextAccessor<\/span><span class=\"p\">)<\/span>\n        <span class=\"p\">:<\/span> <span class=\"k\">base<\/span><span class=\"p\">(<\/span><span class=\"n\">logger<\/span><span class=\"p\">,<\/span> <span class=\"n\">compositeViewEngine<\/span><span class=\"p\">,<\/span> <span class=\"n\">umbracoContextAccessor<\/span><span class=\"p\">)<\/span>\n    <span class=\"p\">{<\/span>\n    <span class=\"p\">}<\/span>\n\n    <span class=\"k\">public<\/span> <span class=\"k\">override<\/span> <span class=\"n\">IActionResult<\/span> <span class=\"nf\">Index<\/span><span class=\"p\">()<\/span>\n    <span class=\"p\">{<\/span>\n        <span class=\"k\">throw<\/span> <span class=\"k\">new<\/span> <span class=\"nf\">Exception<\/span><span class=\"p\">(<\/span><span class=\"s\">\"Whoops, something went wrong!\"<\/span><span class=\"p\">);<\/span>\n    <span class=\"p\">}<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u062d\u0627\u0644 \u0627\u06af\u0631 \u0635\u0641\u062d\u0647 \u062a\u0645\u0627\u0633 \u0631\u0627 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u06a9\u0646\u06cc\u0645\u060c \u0635\u0641\u062d\u0647 \u062e\u0637\u0627\u06cc \u0627\u0633\u062a\u0627\u0646\u062f\u0627\u0631\u062f (\u0632\u0634\u062a) 500 \u0631\u0627 \u062f\u0631\u06cc\u0627\u0641\u062a \u0645\u06cc \u06a9\u0646\u06cc\u0645:<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/nabfollower.com\/blog\/wp-content\/uploads\/2023\/05\/\u0627\u0648\u0647-\u062e\u0637\u0627\u06cc\u06cc-\u06a9\u0647-\u062a\u0648\u0627\u0646\u0633\u062a-\u0628\u0647-\u0635\u0648\u0631\u062a-\u0645\u062e\u0641\u06cc\u0627\u0646\u0647-\u0648\u0627\u0631\u062f-\u062a\u0648\u0644\u06cc\u062f-\u0634\u0648\u062f\u060c.png\" alt=\"\u0635\u0641\u062d\u0647 \u062e\u0637\u0627\u06cc \u0627\u0633\u062a\u0627\u0646\u062f\u0627\u0631\u062f 500 \u0627\u0632 \u0645\u0627\u06cc\u06a9\u0631\u0648\u0633\u0627\u0641\u062a \u0627\u062c\" loading=\"lazy\" width=\"800\" height=\"453\" title=\"\"><\/p>\n<h2><span class=\"ez-toc-section\" id=\"%D9%85%D8%B1%D8%AD%D9%84%D9%87_1_%DA%A9%D9%86%D8%AA%D8%B1%D9%84_%DA%A9%D9%86%D9%86%D8%AF%D9%87_%D8%A7%D8%B3%D8%AA%D8%AB%D9%86%D8%A7_%D8%B1%D8%A7_%D8%A7%D8%B6%D8%A7%D9%81%D9%87_%DA%A9%D9%86%DB%8C%D8%AF\"><\/span>\n<p>  \u0645\u0631\u062d\u0644\u0647 1: \u06a9\u0646\u062a\u0631\u0644 \u06a9\u0646\u0646\u062f\u0647 \u0627\u0633\u062a\u062b\u0646\u0627 \u0631\u0627 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>ASP.NET 6 \u06cc\u06a9 \u0645\u06cc\u0627\u0646 \u0627\u0641\u0632\u0627\u0631 \u0627\u062e\u062a\u0635\u0627\u0635\u06cc \u0628\u0631\u0627\u06cc \u0631\u0633\u06cc\u062f\u06af\u06cc \u0628\u0647 \u0627\u0633\u062a\u062b\u0646\u0627\u0647\u0627 \u062f\u0627\u0631\u062f.  \u0627\u06cc\u0646 \u0628\u0647 \u0634\u0645\u0627 \u0627\u062c\u0627\u0632\u0647 \u0645\u06cc\u200c\u062f\u0647\u062f \u062a\u0627 \u0628\u0627 \u06cc\u06a9 \u0622\u062f\u0631\u0633 \u0627\u06cc\u0646\u062a\u0631\u0646\u062a\u06cc \u062f\u06cc\u06af\u0631 \u0648\u0627\u0631\u062f \u062e\u0637 \u0644\u0648\u0644\u0647 \u0645\u06cc\u0627\u0646\u200c\u0627\u0641\u0632\u0627\u0631 \u0634\u0648\u06cc\u062f \u0648 \u0628\u0647 \u0634\u0645\u0627 \u0627\u0645\u06a9\u0627\u0646 \u0645\u06cc\u200c\u062f\u0647\u062f \u062f\u0631 \u0635\u0648\u0631\u062a \u0628\u0631\u0648\u0632 \u062e\u0637\u0627\u060c \u0635\u0641\u062d\u0647 \u062f\u06cc\u06af\u0631\u06cc \u0631\u0627 \u0627\u0631\u0627\u0626\u0647 \u062f\u0647\u06cc\u062f.  \u062f\u0631 \u0645\u0648\u0631\u062f \u0645\u0627\u060c \u0645\u0647\u0645 \u0646\u06cc\u0633\u062a \u06a9\u0647 \u0622\u062f\u0631\u0633 \u0627\u06cc\u0646\u062a\u0631\u0646\u062a\u06cc \u0686\u06cc\u0633\u062a.  \u06a9\u0646\u062a\u0631\u0644 \u06a9\u0646\u0646\u062f\u0647 \u0631\u0627 \u062f\u0631 \u062e\u0637 \u0644\u0648\u0644\u0647 \u0645\u06cc\u0627\u0646 \u0627\u0641\u0632\u0627\u0631 \u062e\u0648\u062f \u0628\u0647 \u0627\u06cc\u0646 \u0635\u0648\u0631\u062a \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f:<\/p>\n<p><em>Startup.cs<\/em><\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight csharp\"><code><span class=\"k\">public<\/span> <span class=\"k\">class<\/span> <span class=\"nc\">Startup<\/span>\n<span class=\"p\">{<\/span>\n    <span class=\"k\">public<\/span> <span class=\"k\">void<\/span> <span class=\"nf\">Configure<\/span><span class=\"p\">(<\/span><span class=\"n\">IApplicationBuilder<\/span> <span class=\"n\">app<\/span><span class=\"p\">,<\/span> <span class=\"n\">IWebHostEnvironment<\/span> <span class=\"n\">env<\/span><span class=\"p\">)<\/span>\n    <span class=\"p\">{<\/span>\n        <span class=\"c1\">\/\/ ... other middlewares<\/span>\n\n        <span class=\"c1\">\/\/ \ud83d\udc47 Insert this middleware before the Umbraco middlewares.<\/span>\n        <span class=\"c1\">\/\/ The path that you enter here can be anything you want, but it cannot be a path with a file extension.<\/span>\n        <span class=\"n\">app<\/span><span class=\"p\">.<\/span><span class=\"nf\">UseExceptionHandler<\/span><span class=\"p\">(<\/span><span class=\"s\">\"\/error\"<\/span><span class=\"p\">);<\/span>\n\n        <span class=\"n\">app<\/span><span class=\"p\">.<\/span><span class=\"nf\">UseUmbraco<\/span><span class=\"p\">()<\/span>\n            <span class=\"p\">.<\/span><span class=\"nf\">WithMiddleware<\/span><span class=\"p\">(<\/span><span class=\"n\">u<\/span> <span class=\"p\">=&gt;<\/span>\n            <span class=\"p\">{<\/span>\n                <span class=\"c1\">\/\/ ... The rest of the pipeline<\/span>\n            <span class=\"p\">}<\/span>\n    <span class=\"p\">}<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u062a\u0628\u0631\u06cc\u06a9 \u0645\u06cc\u200c\u06af\u0648\u06cc\u06cc\u0645\u060c \u0627\u06a9\u0646\u0648\u0646 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u067e\u0633 \u0627\u0632 \u06cc\u06a9 \u0627\u0633\u062a\u062b\u0646\u0627 \u062f\u0648\u0628\u0627\u0631\u0647 \u0648\u0627\u0631\u062f \u062e\u0637 \u0644\u0648\u0644\u0647 \u0645\u06cc\u0627\u0646\u200c\u0627\u0641\u0632\u0627\u0631 \u0634\u0648\u06cc\u062f.<\/p>\n<p>\u062f\u0631 \u0645\u0631\u062d\u0644\u0647 \u0628\u0639\u062f\u060c \u0628\u0627\u06cc\u062f \u0628\u0647 Umbraco \u0628\u06af\u0648\u06cc\u06cc\u0645 \u06a9\u0647 \u0686\u06af\u0648\u0646\u0647 \u0645\u062d\u062a\u0648\u0627\u06cc \u0645\u0646\u0627\u0633\u0628 \u0628\u0631\u0627\u06cc \u0635\u0641\u062d\u0647 \u062e\u0637\u0627 \u0631\u0627 \u067e\u06cc\u062f\u0627 \u06a9\u0646\u062f:<\/p>\n<h2><span class=\"ez-toc-section\" id=\"%D9%85%D8%B1%D8%AD%D9%84%D9%87_2_%D8%A7%DB%8C%D8%AC%D8%A7%D8%AF_%DB%8C%DA%A9_%D9%85%D8%AD%D8%AA%D9%88%D8%A7_%DB%8C%D8%A7%D8%A8\"><\/span>\n<p>  \u0645\u0631\u062d\u0644\u0647 2: \u0627\u06cc\u062c\u0627\u062f \u06cc\u06a9 \u0645\u062d\u062a\u0648\u0627 \u06cc\u0627\u0628<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Umbraco \u06cc\u06a9 \u0631\u0627\u0647\u200c\u062d\u0644 \u0645\u0633\u06cc\u0631\u06cc\u0627\u0628\u06cc \u06af\u0633\u062a\u0631\u062f\u0647 \u062f\u0627\u0631\u062f \u06a9\u0647 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u0645 \u0622\u0646 \u0631\u0627 \u0628\u0631\u0627\u06cc \u0627\u0646\u062a\u062e\u0627\u0628 \u0635\u0641\u062d\u0647 \u062e\u0637\u0627 \u0628\u0631\u0627\u06cc \u0631\u0633\u06cc\u062f\u06af\u06cc \u0628\u0647 \u062e\u0637\u0627\u0647\u0627 \u0627\u0646\u062a\u062e\u0627\u0628 \u06a9\u0646\u06cc\u0645.  \u0627\u0628\u062a\u062f\u0627 \u06cc\u06a9 \u0635\u0641\u062d\u0647 \u062e\u0637\u0627\u06cc \u0633\u0631\u0648\u0631 \u0627\u062e\u062a\u0635\u0627\u0635\u06cc \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc \u06a9\u0646\u06cc\u0645 \u0648 \u0633\u067e\u0633 \u06cc\u06a9 \u0645\u062d\u062a\u0648\u0627 \u06cc\u0627\u0628 \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc \u06a9\u0646\u06cc\u0645 \u06a9\u0647 \u0628\u062a\u0648\u0627\u0646\u062f \u0622\u0646 \u0631\u0627 \u067e\u06cc\u062f\u0627 \u06a9\u0646\u062f:<\/p>\n<p>\u0645\u0646 \u0642\u0635\u062f \u062f\u0627\u0631\u0645 \u0627\u0632 \u0646\u0648\u0639 \u0633\u0646\u062f \u062e\u0637\u0627 \u06a9\u067e\u06cc \u06a9\u0646\u0645 \u0648 \u0622\u0646 \u0631\u0627 &#8220;\u062e\u0637\u0627\u06cc \u0633\u0631\u0648\u0631&#8221; \u0646\u0627\u0645 \u0628\u0628\u0631\u0645:<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/nabfollower.com\/blog\/wp-content\/uploads\/2023\/05\/1684487631_226_\u0627\u0648\u0647-\u062e\u0637\u0627\u06cc\u06cc-\u06a9\u0647-\u062a\u0648\u0627\u0646\u0633\u062a-\u0628\u0647-\u0635\u0648\u0631\u062a-\u0645\u062e\u0641\u06cc\u0627\u0646\u0647-\u0648\u0627\u0631\u062f-\u062a\u0648\u0644\u06cc\u062f-\u0634\u0648\u062f\u060c.png\" alt=\"\u062a\u0635\u0648\u06cc\u0631\u06cc \u0627\u0632 \u0646\u0648\u0639 \u0633\u0646\u062f \u062c\u062f\u06cc\u062f \" server=\"\" error=\"\" loading=\"lazy\" width=\"800\" height=\"457\" title=\"\"><\/p>\n<p>\u0633\u067e\u0633 \u06cc\u06a9 \u0635\u0641\u062d\u0647 \u062e\u0637\u0627\u06cc \u062c\u062f\u06cc\u062f \u062f\u0631 \u062f\u0631\u062e\u062a \u0645\u062d\u062a\u0648\u0627 \u062f\u0631\u0633\u062a \u0632\u06cc\u0631 \u0635\u0641\u062d\u0647 \u0627\u0635\u0644\u06cc \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc \u06a9\u0646\u0645:<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/nabfollower.com\/blog\/wp-content\/uploads\/2023\/05\/1684487631_2_\u0627\u0648\u0647-\u062e\u0637\u0627\u06cc\u06cc-\u06a9\u0647-\u062a\u0648\u0627\u0646\u0633\u062a-\u0628\u0647-\u0635\u0648\u0631\u062a-\u0645\u062e\u0641\u06cc\u0627\u0646\u0647-\u0648\u0627\u0631\u062f-\u062a\u0648\u0644\u06cc\u062f-\u0634\u0648\u062f\u060c.png\" alt=\"\u062a\u0635\u0648\u06cc\u0631\u06cc \u0627\u0632 \u0635\u0641\u062d\u0647 \u062c\u062f\u06cc\u062f \u0627\u06cc\u062c\u0627\u062f \u0634\u062f\u0647 \u062f\u0631 \u0632\u06cc\u0631 \u0635\u0641\u062d\u0647 \u0627\u0635\u0644\u06cc \u062f\u0631 Umbraco\" loading=\"lazy\" width=\"800\" height=\"525\" title=\"\"><\/p>\n<p>\u0627\u06a9\u0646\u0648\u0646 \u06a9\u0647 \u0645\u062d\u062a\u0648\u0627\u06cc\u06cc \u0628\u0631\u0627\u06cc \u0646\u0645\u0627\u06cc\u0634 \u062f\u0631 \u0635\u0648\u0631\u062a \u062e\u0637\u0627 \u062f\u0627\u0631\u06cc\u0645\u060c \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u0645 \u06cc\u06a9 \u0645\u062d\u062a\u0648\u0627 \u06cc\u0627\u0628 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u0645 \u062a\u0627 \u0622\u0646 \u0631\u0627 \u0628\u0631\u0627\u06cc \u0645\u0627 \u067e\u06cc\u062f\u0627 \u06a9\u0646\u062f:<\/p>\n<p><em>ServerErrorContentFinder.cs<\/em><\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight csharp\"><code><span class=\"k\">public<\/span> <span class=\"k\">class<\/span> <span class=\"nc\">ServerErrorContentFinder<\/span> <span class=\"p\">:<\/span> <span class=\"n\">IContentFinder<\/span>\n<span class=\"p\">{<\/span>\n    <span class=\"k\">private<\/span> <span class=\"k\">readonly<\/span> <span class=\"n\">IHttpContextAccessor<\/span> <span class=\"n\">_httpContextAccessor<\/span><span class=\"p\">;<\/span>\n    <span class=\"k\">private<\/span> <span class=\"k\">readonly<\/span> <span class=\"n\">IUmbracoContextAccessor<\/span> <span class=\"n\">_umbracoContextAccessor<\/span><span class=\"p\">;<\/span>\n\n    <span class=\"k\">public<\/span> <span class=\"nf\">ServerErrorContentFinder<\/span><span class=\"p\">(<\/span><span class=\"n\">IHttpContextAccessor<\/span> <span class=\"n\">httpContextAccessor<\/span><span class=\"p\">,<\/span> <span class=\"n\">IUmbracoContextAccessor<\/span> <span class=\"n\">umbracoContextAccessor<\/span><span class=\"p\">)<\/span>\n    <span class=\"p\">{<\/span>\n        <span class=\"n\">_httpContextAccessor<\/span> <span class=\"p\">=<\/span> <span class=\"n\">httpContextAccessor<\/span><span class=\"p\">;<\/span>\n        <span class=\"n\">_umbracoContextAccessor<\/span> <span class=\"p\">=<\/span> <span class=\"n\">umbracoContextAccessor<\/span><span class=\"p\">;<\/span>\n    <span class=\"p\">}<\/span>\n\n    <span class=\"k\">public<\/span> <span class=\"n\">Task<\/span><span class=\"p\">&lt;<\/span><span class=\"kt\">bool<\/span><span class=\"p\">&gt;<\/span> <span class=\"nf\">TryFindContent<\/span><span class=\"p\">(<\/span><span class=\"n\">IPublishedRequestBuilder<\/span> <span class=\"n\">request<\/span><span class=\"p\">)<\/span>\n    <span class=\"p\">{<\/span>\n        <span class=\"c1\">\/\/ \ud83d\udc47 Upon re-entry, the exception middleware adds a feature to the context with the details about the exception.<\/span>\n        <span class=\"c1\">\/\/ This let's us detect if we're handling errors currently or not.<\/span>\n        <span class=\"k\">if<\/span> <span class=\"p\">(<\/span><span class=\"n\">_httpContextAccessor<\/span><span class=\"p\">.<\/span><span class=\"nf\">GetRequiredHttpContext<\/span><span class=\"p\">().<\/span><span class=\"n\">Features<\/span><span class=\"p\">.<\/span><span class=\"n\">Get<\/span><span class=\"p\">&lt;<\/span><span class=\"n\">IExceptionHandlerPathFeature<\/span><span class=\"p\">&gt;()<\/span> <span class=\"k\">is<\/span> <span class=\"k\">null<\/span><span class=\"p\">)<\/span>\n        <span class=\"p\">{<\/span>\n            <span class=\"k\">return<\/span> <span class=\"n\">Task<\/span><span class=\"p\">.<\/span><span class=\"nf\">FromResult<\/span><span class=\"p\">(<\/span><span class=\"k\">false<\/span><span class=\"p\">);<\/span>\n        <span class=\"p\">}<\/span>\n\n        <span class=\"c1\">\/\/ at this point, we know that we are routing an error page<\/span>\n        <span class=\"kt\">var<\/span> <span class=\"n\">rootNode<\/span> <span class=\"p\">=<\/span> <span class=\"nf\">GetRootNode<\/span><span class=\"p\">(<\/span><span class=\"n\">request<\/span><span class=\"p\">);<\/span>\n\n        <span class=\"c1\">\/\/ \ud83d\udc47 In our example, the server error page is always below the homepage and of type ServerError,<\/span>\n        <span class=\"c1\">\/\/    but you can use any logic you want to find the error page.<\/span>\n        <span class=\"kt\">var<\/span> <span class=\"n\">errorPage<\/span> <span class=\"p\">=<\/span> <span class=\"n\">rootNode<\/span><span class=\"p\">.<\/span><span class=\"n\">FirstChild<\/span><span class=\"p\">&lt;<\/span><span class=\"n\">ServerError<\/span><span class=\"p\">&gt;();<\/span>\n\n        <span class=\"n\">request<\/span><span class=\"p\">.<\/span><span class=\"nf\">SetPublishedContent<\/span><span class=\"p\">(<\/span><span class=\"n\">errorPage<\/span><span class=\"p\">);<\/span>\n        <span class=\"k\">return<\/span> <span class=\"n\">Task<\/span><span class=\"p\">.<\/span><span class=\"nf\">FromResult<\/span><span class=\"p\">(<\/span><span class=\"k\">true<\/span><span class=\"p\">);<\/span>\n    <span class=\"p\">}<\/span>\n\n    <span class=\"k\">private<\/span> <span class=\"n\">IPublishedContent<\/span> <span class=\"nf\">GetRootNode<\/span><span class=\"p\">(<\/span><span class=\"n\">IPublishedRequestBuilder<\/span> <span class=\"n\">request<\/span><span class=\"p\">)<\/span>\n    <span class=\"p\">{<\/span>\n        <span class=\"c1\">\/\/ \ud83d\udc47 Umbraco provides us with the appropriate root node automatically, so we can use that to select the root node.<\/span>\n        <span class=\"kt\">var<\/span> <span class=\"n\">umbracoContext<\/span> <span class=\"p\">=<\/span> <span class=\"n\">_umbracoContextAccessor<\/span><span class=\"p\">.<\/span><span class=\"nf\">GetRequiredUmbracoContext<\/span><span class=\"p\">();<\/span>\n        <span class=\"k\">if<\/span> <span class=\"p\">(<\/span><span class=\"n\">request<\/span><span class=\"p\">.<\/span><span class=\"nf\">HasDomain<\/span><span class=\"p\">())<\/span>\n        <span class=\"p\">{<\/span>\n            <span class=\"k\">return<\/span> <span class=\"n\">umbracoContext<\/span><span class=\"p\">.<\/span><span class=\"n\">Content<\/span><span class=\"p\">!.<\/span><span class=\"nf\">GetById<\/span><span class=\"p\">(<\/span><span class=\"n\">request<\/span><span class=\"p\">.<\/span><span class=\"n\">Domain<\/span><span class=\"p\">!.<\/span><span class=\"n\">ContentId<\/span><span class=\"p\">)!;<\/span>\n        <span class=\"p\">}<\/span>\n\n        <span class=\"c1\">\/\/ \ud83d\udc47 if no domain is assigned, we have to fall back to the first node in the content root<\/span>\n        <span class=\"k\">return<\/span> <span class=\"n\">umbracoContext<\/span><span class=\"p\">.<\/span><span class=\"n\">Content<\/span><span class=\"p\">!.<\/span><span class=\"nf\">GetAtRoot<\/span><span class=\"p\">().<\/span><span class=\"nf\">First<\/span><span class=\"p\">();<\/span>\n    <span class=\"p\">}<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0633\u067e\u0633 \u0645\u062d\u062a\u0648\u0627 \u06cc\u0627\u0628 \u0631\u0627 \u062f\u0631 \u0638\u0631\u0641 DI \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u06cc\u06a9 \u0622\u0647\u0646\u06af\u0633\u0627\u0632 \u062b\u0628\u062a \u0645\u06cc \u06a9\u0646\u06cc\u0645:<\/p>\n<p><em>ServerErrorComposer.cs<\/em><\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight csharp\"><code><span class=\"k\">public<\/span> <span class=\"k\">class<\/span> <span class=\"nc\">ServerErrorComposer<\/span> <span class=\"p\">:<\/span> <span class=\"n\">IComposer<\/span>\n<span class=\"p\">{<\/span>\n    <span class=\"k\">public<\/span> <span class=\"k\">void<\/span> <span class=\"nf\">Compose<\/span><span class=\"p\">(<\/span><span class=\"n\">IUmbracoBuilder<\/span> <span class=\"n\">builder<\/span><span class=\"p\">)<\/span>\n    <span class=\"p\">{<\/span>\n        <span class=\"c1\">\/\/ \ud83d\udc47 Insert the content finder at the start so it has a chance to route the request before other content finders do.<\/span>\n        <span class=\"n\">builder<\/span><span class=\"p\">.<\/span><span class=\"nf\">ContentFinders<\/span><span class=\"p\">().<\/span><span class=\"n\">Insert<\/span><span class=\"p\">&lt;<\/span><span class=\"n\">ServerErrorContentFinder<\/span><span class=\"p\">&gt;(<\/span><span class=\"m\">0<\/span><span class=\"p\">);<\/span>\n    <span class=\"p\">}<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u067e\u0633 \u0647\u0645\u06cc\u0646 \u0628\u0648\u062f\u061f  \u0646\u0647 \u06a9\u0627\u0645\u0644\u0627.  \u0645\u0627 \u0647\u0646\u0648\u0632 \u0635\u0641\u062d\u0647 \u0632\u0634\u062a 500 \u0631\u0627 \u062f\u0631\u06cc\u0627\u0641\u062a \u0645\u06cc \u06a9\u0646\u06cc\u0645 \u0648 \u0645\u062a\u0648\u062c\u0647 \u062e\u0648\u0627\u0647\u06cc\u062f \u0634\u062f \u06a9\u0647 \u06cc\u0627\u0628 \u0645\u062d\u062a\u0648\u0627 \u0647\u0631\u06af\u0632 \u0628\u0631 \u0627\u0633\u0627\u0633 \u062e\u0637\u0627 \u0641\u0639\u0627\u0644 \u0646\u0645\u06cc \u0634\u0648\u062f.  \u062f\u0644\u06cc\u0644 \u0627\u06cc\u0646 \u0627\u0645\u0631 \u0627\u06cc\u0646 \u0627\u0633\u062a \u06a9\u0647 Umbraco \u0645\u0642\u062f\u0627\u0631\u06cc \u0642\u0644\u0648\u0647 \u0633\u0646\u06af \u062f\u0631 \u067e\u0634\u062a \u062e\u0648\u062f \u0628\u0627\u0642\u06cc \u0645\u06cc \u06af\u0630\u0627\u0631\u062f \u06a9\u0647 \u0645\u0627\u0646\u0639 \u0627\u0632 \u0627\u062c\u0631\u0627\u06cc \u0645\u062c\u062f\u062f \u0645\u0631\u062d\u0644\u0647 \u0645\u0633\u06cc\u0631\u06cc\u0627\u0628\u06cc \u0645\u06cc \u0634\u0648\u062f.  \u0645\u0627 \u0628\u0627\u06cc\u062f \u0632\u0645\u06cc\u0646\u0647 \u0631\u0627 \u062a\u0645\u06cc\u0632 \u06a9\u0646\u06cc\u0645 \u062a\u0627 \u06cc\u0627\u0628 \u0645\u062d\u062a\u0648\u0627 \u06a9\u0627\u0631 \u06a9\u0646\u062f.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"%D9%85%D8%B1%D8%AD%D9%84%D9%87_3_%D8%B2%D9%85%DB%8C%D9%86%D9%87_%D8%B1%D8%A7_%D8%A8%D8%B1%D8%A7%DB%8C_%D8%B1%D8%B3%DB%8C%D8%AF%DA%AF%DB%8C_%D8%A8%D9%87_%D8%AE%D8%B7%D8%A7_%D8%A2%D9%85%D8%A7%D8%AF%D9%87_%DA%A9%D9%86%DB%8C%D8%AF\"><\/span>\n<p>  \u0645\u0631\u062d\u0644\u0647 3: \u0632\u0645\u06cc\u0646\u0647 \u0631\u0627 \u0628\u0631\u0627\u06cc \u0631\u0633\u06cc\u062f\u06af\u06cc \u0628\u0647 \u062e\u0637\u0627 \u0622\u0645\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u067e\u0633 \u0627\u0632 \u0645\u0633\u06cc\u0631\u06cc\u0627\u0628\u06cc \u06cc\u06a9 \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u060c Umbraco \u06cc\u06a9 \u0634\u06cc \u0628\u0627 \u0645\u0642\u0627\u062f\u06cc\u0631 \u0645\u0633\u06cc\u0631\u06cc \u06a9\u0647 \u0645\u062d\u0627\u0633\u0628\u0647 \u06a9\u0631\u062f\u0647 \u0627\u0633\u062a \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc \u06a9\u0646\u062f.  \u062a\u0627 \u0632\u0645\u0627\u0646\u06cc \u06a9\u0647 \u0622\u0646 \u0634\u06cc \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u062f\u060c Umbraco \u0627\u0632 \u0645\u0633\u06cc\u0631\u06cc\u0627\u0628\u06cc \u0645\u062c\u062f\u062f \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u062e\u0648\u062f\u062f\u0627\u0631\u06cc \u062e\u0648\u0627\u0647\u062f \u06a9\u0631\u062f.  \u0631\u0627\u0647 \u062d\u0644 \u0627\u06cc\u0646 \u0627\u0633\u062a \u06a9\u0647 \u0628\u0647 \u0633\u0627\u062f\u06af\u06cc \u0634\u06cc \u0631\u0627 \u067e\u0633 \u0627\u0632 \u0648\u0631\u0648\u062f \u0645\u062c\u062f\u062f \u062d\u0630\u0641 \u06a9\u0646\u06cc\u062f.<\/p>\n<p>\u0639\u0644\u0627\u0648\u0647 \u0628\u0631 \u0627\u06cc\u0646\u060c \u0645\u06cc\u0627\u0646\u200c\u0627\u0641\u0632\u0627\u0631 \u06a9\u0646\u062a\u0631\u0644\u200c\u06a9\u0646\u0646\u062f\u0647 \u0627\u0633\u062a\u062b\u0646\u0627\u060c \u0645\u0633\u06cc\u0631 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0631\u0627 \u0628\u0647 \u0647\u0631 \u0686\u06cc\u0632\u06cc \u06a9\u0647 \u062f\u0631 \u0645\u0631\u062d\u0644\u0647 1 \u0648\u0627\u0631\u062f \u06a9\u0631\u062f\u0647\u200c\u0627\u06cc\u0645 \u062a\u063a\u06cc\u06cc\u0631 \u0645\u06cc\u200c\u062f\u0647\u062f. \u0628\u0631\u0627\u06cc \u0627\u06cc\u0646\u06a9\u0647 \u06cc\u0627\u0628 \u0645\u062d\u062a\u0648\u0627\u06cc \u0645\u0627 \u0645\u0637\u0627\u0628\u0642 \u0628\u0627 \u0647\u062f\u0641 \u06a9\u0627\u0631 \u06a9\u0646\u062f\u060c \u0628\u0627\u06cc\u062f \u0622\u0646 \u0645\u0633\u06cc\u0631 \u0631\u0627 \u0628\u0647 \u0637\u0648\u0631 \u0645\u0648\u0642\u062a \u0628\u0647 \u062d\u0627\u0644\u062a \u0627\u0635\u0644\u06cc \u0628\u0627\u0632\u0646\u0634\u0627\u0646\u06cc \u06a9\u0646\u06cc\u0645.<\/p>\n<p>\u0628\u0631\u0627\u06cc \u0627\u0646\u062c\u0627\u0645 \u0627\u06cc\u0646 \u06a9\u0627\u0631\u060c \u0645\u06cc\u0627\u0646 \u0627\u0641\u0632\u0627\u0631 \u0632\u06cc\u0631 \u0631\u0627 \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc \u06a9\u0646\u06cc\u0645:<\/p>\n<p><em>ServerErrorCleanupMiddleware.cs<\/em><\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight csharp\"><code><span class=\"k\">public<\/span> <span class=\"k\">class<\/span> <span class=\"nc\">ServerErrorCleanupMiddleware<\/span>\n<span class=\"p\">{<\/span>\n    <span class=\"k\">private<\/span> <span class=\"k\">readonly<\/span> <span class=\"n\">RequestDelegate<\/span> <span class=\"n\">_next<\/span><span class=\"p\">;<\/span>\n\n    <span class=\"k\">public<\/span> <span class=\"nf\">ServerErrorCleanupMiddleware<\/span><span class=\"p\">(<\/span><span class=\"n\">RequestDelegate<\/span> <span class=\"n\">next<\/span><span class=\"p\">)<\/span>\n    <span class=\"p\">{<\/span>\n        <span class=\"n\">_next<\/span> <span class=\"p\">=<\/span> <span class=\"n\">next<\/span><span class=\"p\">;<\/span>\n    <span class=\"p\">}<\/span>\n\n    <span class=\"k\">public<\/span> <span class=\"k\">async<\/span> <span class=\"n\">Task<\/span> <span class=\"nf\">InvokeAsync<\/span><span class=\"p\">(<\/span><span class=\"n\">HttpContext<\/span> <span class=\"n\">context<\/span><span class=\"p\">)<\/span>\n    <span class=\"p\">{<\/span>\n        <span class=\"c1\">\/\/ \ud83d\udc47 Only run this middleware if we're handling errors<\/span>\n        <span class=\"kt\">var<\/span> <span class=\"n\">errorRoutingFeature<\/span> <span class=\"p\">=<\/span> <span class=\"n\">context<\/span><span class=\"p\">.<\/span><span class=\"n\">Features<\/span><span class=\"p\">.<\/span><span class=\"n\">Get<\/span><span class=\"p\">&lt;<\/span><span class=\"n\">IExceptionHandlerPathFeature<\/span><span class=\"p\">&gt;();<\/span>\n        <span class=\"k\">if<\/span> <span class=\"p\">(<\/span><span class=\"n\">errorRoutingFeature<\/span> <span class=\"k\">is<\/span> <span class=\"k\">null<\/span><span class=\"p\">)<\/span>\n        <span class=\"p\">{<\/span>\n            <span class=\"k\">await<\/span> <span class=\"nf\">_next<\/span><span class=\"p\">(<\/span><span class=\"n\">context<\/span><span class=\"p\">);<\/span>\n            <span class=\"k\">return<\/span><span class=\"p\">;<\/span>\n        <span class=\"p\">}<\/span>\n\n        <span class=\"c1\">\/\/ \ud83d\udc47 Delete the Umbraco route values so that umbraco will recalculate them<\/span>\n        <span class=\"n\">context<\/span><span class=\"p\">.<\/span><span class=\"n\">Features<\/span><span class=\"p\">.<\/span><span class=\"n\">Set<\/span><span class=\"p\">&lt;<\/span><span class=\"n\">UmbracoRouteValues<\/span><span class=\"p\">&gt;(<\/span><span class=\"k\">null<\/span><span class=\"p\">);<\/span>\n\n        <span class=\"c1\">\/\/ \ud83d\udc47 If the error path is set to a static file,<\/span>\n        <span class=\"c1\">\/\/    we don't want to apply any further cleanup and should skip the rest of this middleware.<\/span>\n        <span class=\"k\">if<\/span> <span class=\"p\">(<\/span><span class=\"n\">context<\/span><span class=\"p\">.<\/span><span class=\"n\">Request<\/span><span class=\"p\">.<\/span><span class=\"nf\">IsClientSideRequest<\/span><span class=\"p\">())<\/span>\n        <span class=\"p\">{<\/span>\n            <span class=\"k\">await<\/span> <span class=\"nf\">_next<\/span><span class=\"p\">(<\/span><span class=\"n\">context<\/span><span class=\"p\">);<\/span>\n            <span class=\"k\">return<\/span><span class=\"p\">;<\/span>\n        <span class=\"p\">}<\/span>\n\n        <span class=\"c1\">\/\/ \ud83d\udc47 The error feature contains the original request path.<\/span>\n        <span class=\"c1\">\/\/    Umbraco will automatically calculate the umbraco domain for us if we reset the path<\/span>\n        <span class=\"kt\">var<\/span> <span class=\"n\">originalPath<\/span> <span class=\"p\">=<\/span> <span class=\"n\">context<\/span><span class=\"p\">.<\/span><span class=\"n\">Request<\/span><span class=\"p\">.<\/span><span class=\"n\">Path<\/span><span class=\"p\">;<\/span>\n        <span class=\"n\">context<\/span><span class=\"p\">.<\/span><span class=\"n\">Request<\/span><span class=\"p\">.<\/span><span class=\"n\">Path<\/span> <span class=\"p\">=<\/span> <span class=\"n\">errorRoutingFeature<\/span><span class=\"p\">.<\/span><span class=\"n\">Path<\/span><span class=\"p\">;<\/span>\n\n        <span class=\"k\">try<\/span>\n        <span class=\"p\">{<\/span>\n            <span class=\"k\">await<\/span> <span class=\"nf\">_next<\/span><span class=\"p\">(<\/span><span class=\"n\">context<\/span><span class=\"p\">);<\/span>\n        <span class=\"p\">}<\/span>\n        <span class=\"k\">finally<\/span>\n        <span class=\"p\">{<\/span>\n            <span class=\"c1\">\/\/ \ud83d\udc47 after running the middleware, make sure to restore the path to the error path.<\/span>\n            <span class=\"c1\">\/\/ Otherwise the exception middleware gets stuck in a loop<\/span>\n            <span class=\"n\">context<\/span><span class=\"p\">.<\/span><span class=\"n\">Request<\/span><span class=\"p\">.<\/span><span class=\"n\">Path<\/span> <span class=\"p\">=<\/span> <span class=\"n\">originalPath<\/span><span class=\"p\">;<\/span>\n        <span class=\"p\">}<\/span>\n    <span class=\"p\">}<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0627\u06a9\u0646\u0648\u0646 \u0627\u06cc\u0646 \u0645\u06cc\u0627\u0646 \u0627\u0641\u0632\u0627\u0631 \u0631\u0627 \u062f\u0631 \u062e\u0637 \u0644\u0648\u0644\u0647 \u0645\u06cc\u0627\u0646 \u0627\u0641\u0632\u0627\u0631\u060c \u062f\u0631\u0633\u062a \u062f\u0631 \u067e\u0634\u062a \u0645\u06cc\u0627\u0646 \u0627\u0641\u0632\u0627\u0631 \u06a9\u0646\u062a\u0631\u0644 \u06a9\u0646\u0646\u062f\u0647 \u0627\u0633\u062a\u062b\u0646\u0627 \u062b\u0628\u062a \u06a9\u0646\u06cc\u062f:<\/p>\n<p><em>Startup.cs<\/em><\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight csharp\"><code><span class=\"k\">public<\/span> <span class=\"k\">class<\/span> <span class=\"nc\">Startup<\/span>\n<span class=\"p\">{<\/span>\n    <span class=\"k\">public<\/span> <span class=\"k\">void<\/span> <span class=\"nf\">Configure<\/span><span class=\"p\">(<\/span><span class=\"n\">IApplicationBuilder<\/span> <span class=\"n\">app<\/span><span class=\"p\">,<\/span> <span class=\"n\">IWebHostEnvironment<\/span> <span class=\"n\">env<\/span><span class=\"p\">)<\/span>\n    <span class=\"p\">{<\/span>\n        <span class=\"c1\">\/\/ ... other middlewares<\/span>\n\n        <span class=\"n\">app<\/span><span class=\"p\">.<\/span><span class=\"nf\">UseExceptionHandler<\/span><span class=\"p\">(<\/span><span class=\"s\">\"\/error\"<\/span><span class=\"p\">);<\/span>\n        <span class=\"n\">app<\/span><span class=\"p\">.<\/span><span class=\"n\">UseMiddleware<\/span><span class=\"p\">&lt;<\/span><span class=\"n\">ServerErrorCleanupMiddleware<\/span><span class=\"p\">&gt;();<\/span>\n\n        <span class=\"n\">app<\/span><span class=\"p\">.<\/span><span class=\"nf\">UseUmbraco<\/span><span class=\"p\">()<\/span>\n            <span class=\"p\">.<\/span><span class=\"nf\">WithMiddleware<\/span><span class=\"p\">(<\/span><span class=\"n\">u<\/span> <span class=\"p\">=&gt;<\/span>\n            <span class=\"p\">{<\/span>\n                <span class=\"c1\">\/\/ ... The rest of the pipeline<\/span>\n            <span class=\"p\">}<\/span>\n    <span class=\"p\">}<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0627\u06a9\u0646\u0648\u0646 \u0635\u0641\u062d\u0647 \u062a\u0645\u0627\u0633 \u0631\u0627 \u0628\u0631\u0631\u0633\u06cc \u0645\u06cc \u06a9\u0646\u06cc\u0645:<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/nabfollower.com\/blog\/wp-content\/uploads\/2023\/05\/1684487631_57_\u0627\u0648\u0647-\u062e\u0637\u0627\u06cc\u06cc-\u06a9\u0647-\u062a\u0648\u0627\u0646\u0633\u062a-\u0628\u0647-\u0635\u0648\u0631\u062a-\u0645\u062e\u0641\u06cc\u0627\u0646\u0647-\u0648\u0627\u0631\u062f-\u062a\u0648\u0644\u06cc\u062f-\u0634\u0648\u062f\u060c.png\" alt=\"\u0627\u0633\u06a9\u0631\u06cc\u0646 \u0634\u0627\u062a \u0627\u0632 \u0635\u0641\u062d\u0647 \u062a\u0645\u0627\u0633 \u0628\u0627 \u0635\u0641\u062d\u0647 \u062e\u0637\u0627\u06cc \u0632\u06cc\u0628\u0627\" loading=\"lazy\" width=\"800\" height=\"486\" title=\"\"><\/p>\n<p>\u06a9\u0627\u0631 \u0645\u06cc \u06a9\u0646\u062f!!  \ud83c\udf89<\/p>\n<h2><span class=\"ez-toc-section\" id=\"%D9%85%D8%B1%D8%AD%D9%84%D9%87_4_%DB%8C%DA%A9_%D8%B5%D9%81%D8%AD%D9%87_%D8%AE%D8%B7%D8%A7%DB%8C_%D8%A8%D8%A7%D8%B2%DA%AF%D8%B4%D8%AA%DB%8C_%D8%AB%D8%A7%D8%A8%D8%AA_%D8%A7%D8%B6%D8%A7%D9%81%D9%87_%DA%A9%D9%86%DB%8C%D8%AF\"><\/span>\n<p>  \u0645\u0631\u062d\u0644\u0647 4: \u06cc\u06a9 \u0635\u0641\u062d\u0647 \u062e\u0637\u0627\u06cc \u0628\u0627\u0632\u06af\u0634\u062a\u06cc \u062b\u0627\u0628\u062a \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u0627\u0645\u0627 \u0627\u06af\u0631 \u0635\u0641\u062d\u0647 \u062e\u0637\u0627 \u0646\u06cc\u0632 \u0627\u0632 \u06a9\u0627\u0631 \u0628\u06cc\u0641\u062a\u062f \u0686\u0647\u061f  \u0628\u06cc\u0627\u06cc\u06cc\u062f \u0627\u06cc\u0646 \u0631\u0627 \u0628\u0627 \u0642\u0631\u0627\u0631 \u062f\u0627\u062f\u0646 \u06cc\u06a9 \u0627\u0633\u062a\u062b\u0646\u0627 \u062f\u0631 \u0635\u0641\u062d\u0647 \u062e\u0637\u0627 \u0634\u0628\u06cc\u0647 \u0633\u0627\u0632\u06cc \u06a9\u0646\u06cc\u0645:<\/p>\n<p><em>ServerErrorController.cs<\/em><\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight csharp\"><code><span class=\"k\">public<\/span> <span class=\"k\">class<\/span> <span class=\"nc\">ServerErrorController<\/span> <span class=\"p\">:<\/span> <span class=\"n\">RenderController<\/span>\n<span class=\"p\">{<\/span>\n    <span class=\"k\">public<\/span> <span class=\"nf\">ServerErrorController<\/span><span class=\"p\">(<\/span>\n        <span class=\"n\">ILogger<\/span><span class=\"p\">&lt;<\/span><span class=\"n\">RenderController<\/span><span class=\"p\">&gt;<\/span> <span class=\"n\">logger<\/span><span class=\"p\">,<\/span>\n        <span class=\"n\">ICompositeViewEngine<\/span> <span class=\"n\">compositeViewEngine<\/span><span class=\"p\">,<\/span>\n        <span class=\"n\">IUmbracoContextAccessor<\/span> <span class=\"n\">umbracoContextAccessor<\/span><span class=\"p\">)<\/span>\n        <span class=\"p\">:<\/span> <span class=\"k\">base<\/span><span class=\"p\">(<\/span><span class=\"n\">logger<\/span><span class=\"p\">,<\/span> <span class=\"n\">compositeViewEngine<\/span><span class=\"p\">,<\/span> <span class=\"n\">umbracoContextAccessor<\/span><span class=\"p\">)<\/span>\n    <span class=\"p\">{<\/span>\n    <span class=\"p\">}<\/span>\n\n    <span class=\"k\">public<\/span> <span class=\"k\">override<\/span> <span class=\"n\">IActionResult<\/span> <span class=\"nf\">Index<\/span><span class=\"p\">()<\/span>\n    <span class=\"p\">{<\/span>\n        <span class=\"k\">throw<\/span> <span class=\"k\">new<\/span> <span class=\"nf\">Exception<\/span><span class=\"p\">(<\/span><span class=\"s\">\"Oof, the error page doesn't work!\"<\/span><span class=\"p\">);<\/span>\n    <span class=\"p\">}<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u062d\u0627\u0644\u0627 \u0628\u0627 \u06cc\u06a9 \u0635\u0641\u062d\u0647 500 \u0632\u0634\u062a \u0628\u0647 \u0647\u0645\u0627\u0646 \u062c\u0627\u06cc\u06cc \u06a9\u0647 \u0634\u0631\u0648\u0639 \u06a9\u0631\u062f\u06cc\u0645 \u0628\u0631\u06af\u0634\u062a\u06cc\u0645.  \u0628\u0631\u0627\u06cc \u062d\u0644 \u0627\u06cc\u0646 \u0645\u0634\u06a9\u0644\u060c \u06cc\u06a9 \u0645\u06cc\u0627\u0646 \u0627\u0641\u0632\u0627\u0631 \u06a9\u0646\u062a\u0631\u0644 \u06a9\u0646\u0646\u062f\u0647 \u0627\u0633\u062a\u062b\u0646\u0627 \u062f\u06cc\u06af\u0631 \u0631\u0627 \u062f\u0631\u0633\u062a \u0642\u0628\u0644 \u0627\u0632 \u0627\u0648\u0644\u06cc \u0627\u0636\u0627\u0641\u0647 \u0645\u06cc \u06a9\u0646\u06cc\u0645:<\/p>\n<p><em>Startup.cs<\/em><\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight csharp\"><code><span class=\"k\">public<\/span> <span class=\"k\">class<\/span> <span class=\"nc\">Startup<\/span>\n<span class=\"p\">{<\/span>\n    <span class=\"k\">public<\/span> <span class=\"k\">void<\/span> <span class=\"nf\">Configure<\/span><span class=\"p\">(<\/span><span class=\"n\">IApplicationBuilder<\/span> <span class=\"n\">app<\/span><span class=\"p\">,<\/span> <span class=\"n\">IWebHostEnvironment<\/span> <span class=\"n\">env<\/span><span class=\"p\">)<\/span>\n    <span class=\"p\">{<\/span>\n        <span class=\"c1\">\/\/ ... other middlewares<\/span>\n\n        <span class=\"c1\">\/\/ \ud83d\udc47 Add another exception handler here that points to a static file<\/span>\n        <span class=\"n\">app<\/span><span class=\"p\">.<\/span><span class=\"nf\">UseExceptionHandler<\/span><span class=\"p\">(<\/span><span class=\"s\">\"\/error.html\"<\/span><span class=\"p\">);<\/span>\n        <span class=\"n\">app<\/span><span class=\"p\">.<\/span><span class=\"nf\">UseExceptionHandler<\/span><span class=\"p\">(<\/span><span class=\"s\">\"\/error\"<\/span><span class=\"p\">);<\/span>\n        <span class=\"n\">app<\/span><span class=\"p\">.<\/span><span class=\"n\">UseMiddleware<\/span><span class=\"p\">&lt;<\/span><span class=\"n\">ServerErrorCleanupMiddleware<\/span><span class=\"p\">&gt;();<\/span>\n\n        <span class=\"n\">app<\/span><span class=\"p\">.<\/span><span class=\"nf\">UseUmbraco<\/span><span class=\"p\">()<\/span>\n            <span class=\"p\">.<\/span><span class=\"nf\">WithMiddleware<\/span><span class=\"p\">(<\/span><span class=\"n\">u<\/span> <span class=\"p\">=&gt;<\/span>\n            <span class=\"p\">{<\/span>\n                <span class=\"c1\">\/\/ ... The rest of the pipeline<\/span>\n            <span class=\"p\">}<\/span>\n    <span class=\"p\">}<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0647\u0645\u0686\u0646\u06cc\u0646 \u0628\u0627\u06cc\u062f \u06cc\u06a9 \u0641\u0627\u06cc\u0644 \u0627\u0633\u062a\u0627\u062a\u06cc\u06a9 \u0628\u0647 \u067e\u0631\u0648\u0698\u0647 \u062e\u0648\u062f \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u0645.  \u0645\u0627 \u06cc\u06a9 \u0641\u0627\u06cc\u0644 \u0633\u0627\u062f\u0647 \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc \u06a9\u0646\u06cc\u0645 <code>error.html<\/code> \u062f\u0627\u062e\u0644 <code>wwwroot<\/code>:<\/p>\n<p><em>error.html<\/em><\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight html\"><code><span class=\"cp\">&lt;!DOCTYPE html&gt;<\/span>\n<span class=\"nt\">&lt;html&gt;<\/span>\n<span class=\"nt\">&lt;head&gt;<\/span>\n    <span class=\"nt\">&lt;meta<\/span> <span class=\"na\">charset=<\/span><span class=\"s\">\"utf-8\"<\/span> <span class=\"nt\">\/&gt;<\/span>\n    <span class=\"nt\">&lt;title&gt;<\/span>500 Server Error<span class=\"nt\">&lt;\/title&gt;<\/span>\n<span class=\"nt\">&lt;\/head&gt;<\/span>\n<span class=\"nt\">&lt;body&gt;<\/span>\n    <span class=\"nt\">&lt;h1&gt;<\/span>Oops! This page doesn't seem to work right now<span class=\"nt\">&lt;\/h1&gt;<\/span>\n<span class=\"nt\">&lt;\/body&gt;<\/span>\n<span class=\"nt\">&lt;\/html&gt;<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0627\u06af\u0631 \u0627\u06a9\u0646\u0648\u0646 \u0628\u062e\u0648\u0627\u0647\u06cc\u0645 \u0635\u0641\u062d\u0647 \u062a\u0645\u0627\u0633 \u0631\u0627 \u0628\u0627\u0631\u06af\u06cc\u0631\u06cc \u06a9\u0646\u06cc\u0645\u060c \u0627\u06cc\u0646 \u0631\u0627 \u0645\u06cc \u0628\u06cc\u0646\u06cc\u0645:<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/nabfollower.com\/blog\/wp-content\/uploads\/2023\/05\/1684487631_725_\u0627\u0648\u0647-\u062e\u0637\u0627\u06cc\u06cc-\u06a9\u0647-\u062a\u0648\u0627\u0646\u0633\u062a-\u0628\u0647-\u0635\u0648\u0631\u062a-\u0645\u062e\u0641\u06cc\u0627\u0646\u0647-\u0648\u0627\u0631\u062f-\u062a\u0648\u0644\u06cc\u062f-\u0634\u0648\u062f\u060c.png\" alt=\"\u0627\u0633\u06a9\u0631\u06cc\u0646 \u0634\u0627\u062a \u0627\u0632 \u0635\u0641\u062d\u0647 \u062a\u0645\u0627\u0633 \u0647\u0646\u06af\u0627\u0645 \u0627\u0631\u0627\u0626\u0647 \u0635\u0641\u062d\u0647 \u062e\u0637\u0627\u06cc \u0627\u0633\u062a\u0627\u062a\u06cc\u06a9\" loading=\"lazy\" width=\"800\" height=\"332\" title=\"\"><\/p>\n<p>\u0628\u062f\u06cc\u0647\u06cc \u0627\u0633\u062a \u06a9\u0647 \u0634\u0645\u0627 \u06cc\u06a9 \u0635\u0641\u062d\u0647 \u062e\u0637\u0627\u06cc \u0627\u0633\u062a\u0627\u062a\u06cc\u06a9 \u062c\u0630\u0627\u0628 \u062a\u0631\u06cc \u0646\u0633\u0628\u062a \u0628\u0647 \u0627\u06cc\u0646 \u0635\u0641\u062d\u0647 \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc \u06a9\u0646\u06cc\u062f\u060c \u0627\u0645\u0627 \u0646\u06a9\u062a\u0647 \u0631\u0627 \u0645\u062a\u0648\u062c\u0647 \u0634\u062f\u06cc\u062f.<\/p>\n<p>\u0627\u06af\u0631\u0686\u0647 \u0647\u0646\u0648\u0632 \u06a9\u0627\u0645\u0644\u0627\u064b \u0627\u0646\u062c\u0627\u0645 \u0646\u0634\u062f\u0647 \u0627\u0633\u062a\u060c \u0632\u06cc\u0631\u0627 \u0627\u06af\u0631 \u0628\u0647 DevTools \u0646\u06af\u0627\u0647 \u06a9\u0646\u06cc\u0645\u060c \u0645\u06cc\u200c\u0628\u06cc\u0646\u06cc\u0645 \u06a9\u0647 \u0635\u0641\u062d\u0647 \u062e\u0637\u0627\u06cc \u0627\u0633\u062a\u0627\u062a\u06cc\u06a9 \u0628\u0627 \u06cc\u06a9 \u067e\u0627\u0633\u062e OK 200 \u0627\u0631\u0627\u0626\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/nabfollower.com\/blog\/wp-content\/uploads\/2023\/05\/1684487631_66_\u0627\u0648\u0647-\u062e\u0637\u0627\u06cc\u06cc-\u06a9\u0647-\u062a\u0648\u0627\u0646\u0633\u062a-\u0628\u0647-\u0635\u0648\u0631\u062a-\u0645\u062e\u0641\u06cc\u0627\u0646\u0647-\u0648\u0627\u0631\u062f-\u062a\u0648\u0644\u06cc\u062f-\u0634\u0648\u062f\u060c.png\" alt=\"\u0627\u0633\u06a9\u0631\u06cc\u0646 \u0634\u0627\u062a DevTools \u06a9\u0647 \u0646\u0634\u0627\u0646 \u0645\u06cc \u062f\u0647\u062f \u0635\u0641\u062d\u0647 \u062e\u0637\u0627 \u0628\u0627 \u06a9\u062f \u067e\u0627\u0633\u062e 200 OK \u062f\u0631\u06cc\u0627\u0641\u062a \u0634\u062f\u0647 \u0627\u0633\u062a.\" loading=\"lazy\" width=\"470\" height=\"73\" title=\"\"><\/p>\n<p>\u0627\u06cc\u0646 \u0645\u0637\u0644\u0648\u0628 \u0646\u06cc\u0633\u062a\u060c \u0632\u06cc\u0631\u0627 \u0628\u0647 \u0627\u06cc\u0646 \u0645\u0639\u0646\u06cc \u0627\u0633\u062a \u06a9\u0647 \u06af\u0648\u06af\u0644 \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u0635\u0641\u062d\u0647 \u062e\u0637\u0627\u06cc \u0634\u0645\u0627 \u0631\u0627 \u0627\u06cc\u0646\u062f\u06a9\u0633 \u06a9\u0646\u062f.  \u0635\u0641\u062d\u0647 \u062e\u0637\u0627 \u0628\u0627\u06cc\u062f \u0628\u0627 \u06a9\u062f \u0648\u0636\u0639\u06cc\u062a 500 \u0627\u0631\u0627\u0626\u0647 \u0634\u0648\u062f\u060c \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0628\u06cc\u0627\u06cc\u06cc\u062f \u0622\u0646 \u0631\u0627 \u0628\u0631\u0637\u0631\u0641 \u06a9\u0646\u06cc\u0645:<\/p>\n<h2><span class=\"ez-toc-section\" id=\"%D9%85%D8%B1%D8%AD%D9%84%D9%87_5_%D8%A7%D8%B7%D9%85%DB%8C%D9%86%D8%A7%D9%86_%D8%A7%D8%B2_%DA%A9%D8%AF_%D9%88%D8%B6%D8%B9%DB%8C%D8%AA_500_%D8%AF%D8%B1_%D8%B5%D9%81%D8%AD%D8%A7%D8%AA_%D8%AE%D8%B7%D8%A7\"><\/span>\n<p>  \u0645\u0631\u062d\u0644\u0647 5: \u0627\u0637\u0645\u06cc\u0646\u0627\u0646 \u0627\u0632 \u06a9\u062f \u0648\u0636\u0639\u06cc\u062a 500 \u062f\u0631 \u0635\u0641\u062d\u0627\u062a \u062e\u0637\u0627<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u0628\u0631\u0627\u06cc \u0627\u0637\u0645\u06cc\u0646\u0627\u0646 \u0627\u0632 \u06a9\u062f \u0648\u0636\u0639\u06cc\u062a \u0635\u062d\u06cc\u062d \u062f\u0631 \u0635\u0641\u062d\u0627\u062a \u062e\u0637\u0627\u060c \u0645\u06cc\u0627\u0646 \u0627\u0641\u0632\u0627\u0631 \u062f\u06cc\u06af\u0631\u06cc \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc \u06a9\u0646\u06cc\u0645:<\/p>\n<p><em>ServerErrorResponseCodeMiddleware.cs<\/em><\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight csharp\"><code><span class=\"k\">public<\/span> <span class=\"k\">class<\/span> <span class=\"nc\">ServerErrorResponseCodeMiddleware<\/span>\n<span class=\"p\">{<\/span>\n    <span class=\"k\">private<\/span> <span class=\"k\">readonly<\/span> <span class=\"n\">RequestDelegate<\/span> <span class=\"n\">_next<\/span><span class=\"p\">;<\/span>\n\n    <span class=\"k\">public<\/span> <span class=\"nf\">ServerErrorResponseCodeMiddleware<\/span><span class=\"p\">(<\/span><span class=\"n\">RequestDelegate<\/span> <span class=\"n\">next<\/span><span class=\"p\">)<\/span>\n    <span class=\"p\">{<\/span>\n        <span class=\"n\">_next<\/span> <span class=\"p\">=<\/span> <span class=\"n\">next<\/span><span class=\"p\">;<\/span>\n    <span class=\"p\">}<\/span>\n\n    <span class=\"k\">public<\/span> <span class=\"n\">Task<\/span> <span class=\"nf\">InvokeAsync<\/span><span class=\"p\">(<\/span><span class=\"n\">HttpContext<\/span> <span class=\"n\">context<\/span><span class=\"p\">)<\/span>\n    <span class=\"p\">{<\/span>\n        <span class=\"c1\">\/\/ \ud83d\udc47 As soon as we start writing the response to the client,<\/span>\n        <span class=\"c1\">\/\/ we need to check if we're sending an error response.<\/span>\n        <span class=\"c1\">\/\/ If we do: ensure that the statuscode is 500<\/span>\n        <span class=\"n\">context<\/span><span class=\"p\">.<\/span><span class=\"n\">Response<\/span><span class=\"p\">.<\/span><span class=\"nf\">OnStarting<\/span><span class=\"p\">(()<\/span> <span class=\"p\">=&gt;<\/span>\n        <span class=\"p\">{<\/span>\n            <span class=\"kt\">var<\/span> <span class=\"n\">exceptionPathFeature<\/span> <span class=\"p\">=<\/span> <span class=\"n\">context<\/span><span class=\"p\">.<\/span><span class=\"n\">Features<\/span><span class=\"p\">.<\/span><span class=\"n\">Get<\/span><span class=\"p\">&lt;<\/span><span class=\"n\">IExceptionHandlerPathFeature<\/span><span class=\"p\">&gt;();<\/span>\n\n            <span class=\"k\">if<\/span> <span class=\"p\">(<\/span><span class=\"n\">exceptionPathFeature<\/span> <span class=\"k\">is<\/span> <span class=\"n\">not<\/span> <span class=\"k\">null<\/span><span class=\"p\">)<\/span>\n            <span class=\"p\">{<\/span>\n                <span class=\"n\">context<\/span><span class=\"p\">.<\/span><span class=\"n\">Response<\/span><span class=\"p\">.<\/span><span class=\"n\">StatusCode<\/span> <span class=\"p\">=<\/span> <span class=\"n\">StatusCodes<\/span><span class=\"p\">.<\/span><span class=\"n\">Status500InternalServerError<\/span><span class=\"p\">;<\/span>\n            <span class=\"p\">}<\/span>\n\n            <span class=\"k\">return<\/span> <span class=\"n\">Task<\/span><span class=\"p\">.<\/span><span class=\"n\">CompletedTask<\/span><span class=\"p\">;<\/span>\n        <span class=\"p\">});<\/span>\n\n        <span class=\"k\">return<\/span> <span class=\"nf\">_next<\/span><span class=\"p\">(<\/span><span class=\"n\">context<\/span><span class=\"p\">);<\/span>\n    <span class=\"p\">}<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0645\u0627 \u0627\u06cc\u0646 \u0645\u06cc\u0627\u0646 \u0627\u0641\u0632\u0627\u0631 \u0631\u0627 \u062f\u0631 \u062e\u0637 \u0644\u0648\u0644\u0647 \u062b\u0628\u062a \u0645\u06cc \u06a9\u0646\u06cc\u0645:<\/p>\n<p><em>Startup.cs<\/em><\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight csharp\"><code><span class=\"k\">public<\/span> <span class=\"k\">class<\/span> <span class=\"nc\">Startup<\/span>\n<span class=\"p\">{<\/span>\n    <span class=\"k\">public<\/span> <span class=\"k\">void<\/span> <span class=\"nf\">Configure<\/span><span class=\"p\">(<\/span><span class=\"n\">IApplicationBuilder<\/span> <span class=\"n\">app<\/span><span class=\"p\">,<\/span> <span class=\"n\">IWebHostEnvironment<\/span> <span class=\"n\">env<\/span><span class=\"p\">)<\/span>\n    <span class=\"p\">{<\/span>\n        <span class=\"c1\">\/\/ ... other middlewares<\/span>\n\n        <span class=\"c1\">\/\/ \ud83d\udc47 Add the middleware right before all other error middlewares<\/span>\n        <span class=\"n\">app<\/span><span class=\"p\">.<\/span><span class=\"n\">UseMiddleware<\/span><span class=\"p\">&lt;<\/span><span class=\"n\">ServerErrorResponseCodeMiddleware<\/span><span class=\"p\">&gt;();<\/span>\n        <span class=\"n\">app<\/span><span class=\"p\">.<\/span><span class=\"nf\">UseExceptionHandler<\/span><span class=\"p\">(<\/span><span class=\"s\">\"\/error.html\"<\/span><span class=\"p\">);<\/span>\n        <span class=\"n\">app<\/span><span class=\"p\">.<\/span><span class=\"nf\">UseExceptionHandler<\/span><span class=\"p\">(<\/span><span class=\"s\">\"\/error\"<\/span><span class=\"p\">);<\/span>\n        <span class=\"n\">app<\/span><span class=\"p\">.<\/span><span class=\"n\">UseMiddleware<\/span><span class=\"p\">&lt;<\/span><span class=\"n\">ServerErrorCleanupMiddleware<\/span><span class=\"p\">&gt;();<\/span>\n\n        <span class=\"n\">app<\/span><span class=\"p\">.<\/span><span class=\"nf\">UseUmbraco<\/span><span class=\"p\">()<\/span>\n            <span class=\"p\">.<\/span><span class=\"nf\">WithMiddleware<\/span><span class=\"p\">(<\/span><span class=\"n\">u<\/span> <span class=\"p\">=&gt;<\/span>\n            <span class=\"p\">{<\/span>\n                <span class=\"c1\">\/\/ ... The rest of the pipeline<\/span>\n            <span class=\"p\">}<\/span>\n    <span class=\"p\">}<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0627\u06a9\u0646\u0648\u0646 \u0635\u0641\u062d\u0647 \u062e\u0637\u0627 \u0647\u0645\u06cc\u0634\u0647 \u0628\u0627 \u06a9\u062f \u0648\u0636\u0639\u06cc\u062a \u0645\u0646\u0627\u0633\u0628 \u0627\u0631\u0627\u0626\u0647 \u0645\u06cc \u0634\u0648\u062f:<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/nabfollower.com\/blog\/wp-content\/uploads\/2023\/05\/1684487631_46_\u0627\u0648\u0647-\u062e\u0637\u0627\u06cc\u06cc-\u06a9\u0647-\u062a\u0648\u0627\u0646\u0633\u062a-\u0628\u0647-\u0635\u0648\u0631\u062a-\u0645\u062e\u0641\u06cc\u0627\u0646\u0647-\u0648\u0627\u0631\u062f-\u062a\u0648\u0644\u06cc\u062f-\u0634\u0648\u062f\u060c.png\" alt=\"\u062a\u0635\u0648\u06cc\u0631\u06cc \u0627\u0632 DevTools \u06a9\u0647 \u0635\u0641\u062d\u0647 \u062e\u0637\u0627 \u0631\u0627 \u0628\u0627 \u06a9\u062f \u0648\u0636\u0639\u06cc\u062a 500 \u0646\u0634\u0627\u0646 \u0645\u06cc\u200c\u062f\u0647\u062f\" loading=\"lazy\" width=\"467\" height=\"50\" title=\"\"><\/p>\n<p>\u067e\u06cc\u0631\u0648\u0632\u06cc!!  \ud83c\udf89<\/p>\n<h2><span class=\"ez-toc-section\" id=\"%D9%85%D8%B2%D8%A7%DB%8C%D8%A7\"><\/span>\n<p>  \u0645\u0632\u0627\u06cc\u0627<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u0627\u06af\u0631 \u062a\u0645\u0627\u0645 \u0631\u0627\u0647 \u0631\u0627 \u0628\u0647 \u0627\u06cc\u0646\u062c\u0627 \u0631\u0633\u0627\u0646\u062f\u06cc\u060c \u0622\u0641\u0631\u06cc\u0646!  \u0627\u06cc\u0646 \u06a9\u0645\u06cc \u06a9\u0627\u0631 \u0628\u0648\u062f\u0647 \u0627\u0633\u062a\u060c \u0627\u0645\u0627 \u0647\u0645\u0647 \u0686\u06cc\u0632 \u0627\u0631\u0632\u0634\u0634 \u0631\u0627 \u062f\u0627\u0631\u062f\u060c \u0632\u06cc\u0631\u0627 \u0645\u0627 \u0627\u0632 \u0686\u0646\u062f \u062c\u0647\u062a \u0633\u0648\u062f \u0645\u06cc \u0628\u0631\u06cc\u0645:<\/p>\n<ul>\n<li>\u2705 \u0645\u0631\u0648\u0631\u06af\u0631 \u062f\u0631 \u0647\u0645\u0627\u0646 URL \u0628\u0627\u0642\u06cc \u0645\u06cc \u0645\u0627\u0646\u062f<\/li>\n<li>\u2705 \u0645\u0631\u0648\u0631\u06af\u0631 \u0647\u0645\u06cc\u0634\u0647 \u062f\u0631 \u0635\u0648\u0631\u062a \u062e\u0631\u0627\u0628\u06cc \u06a9\u062f \u0648\u0636\u0639\u06cc\u062a 500 \u0631\u0627 \u062f\u0631\u06cc\u0627\u0641\u062a \u0645\u06cc \u06a9\u0646\u062f<\/li>\n<li>\u2705 \u0635\u0641\u062d\u0647 \u062e\u0637\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u0647\u0631 \u0635\u0641\u062d\u0647 \u0627\u06cc \u06a9\u0647 \u0645\u06cc \u062e\u0648\u0627\u0647\u06cc\u062f \u0628\u0627\u0634\u062f<\/li>\n<li>\u2705 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0627\u0632 \u0645\u0633\u06cc\u0631 \u0631\u0628\u0627\u06cc\u06cc Umbraco \u0628\u0631\u0627\u06cc \u0635\u0641\u062d\u0647 \u062e\u0637\u0627\u06cc \u062e\u0648\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f<\/li>\n<li>\u2705 \u0628\u0627\u0632\u06af\u0634\u062a \u0627\u0633\u062a\u0627\u062a\u06cc\u06a9 \u06cc\u06a9 \u0635\u0641\u062d\u0647 \u062e\u0637\u0627\u06cc \u062e\u0648\u0628 \u0631\u0627 \u062a\u0636\u0645\u06cc\u0646 \u0645\u06cc \u06a9\u0646\u062f\u060c \u0645\u0647\u0645 \u0646\u06cc\u0633\u062a \u06a9\u0647 \u0686\u0647 \u0628\u0627\u0634\u062f<\/li>\n<li>\u2705 \u0628\u062f\u0648\u0646 \u062a\u0648\u062c\u0647 \u0628\u0647 \u0627\u0633\u062a\u0631\u0627\u062a\u0698\u06cc \u062f\u0627\u0645\u0646\u0647 \u0627\u06cc \u06a9\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u06cc\u062f\u060c \u0627\u0632 \u0686\u0646\u062f \u0633\u0627\u06cc\u062a \u0648 \u0686\u0646\u062f \u0632\u0628\u0627\u0646 \u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc \u0645\u06cc \u06a9\u0646\u062f<\/li>\n<\/ul>\n<h2><span class=\"ez-toc-section\" id=\"%D8%A7%D9%81%DA%A9%D8%A7%D8%B1_%D9%86%D9%87%D8%A7%DB%8C%DB%8C\"><\/span>\n<p>  \u0627\u0641\u06a9\u0627\u0631 \u0646\u0647\u0627\u06cc\u06cc<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u0647\u0631 \u062f\u0648 ASP.NET 6 \u0648 Umbraco 10 \u06cc\u06a9 \u0686\u0627\u0631\u0686\u0648\u0628 \u0639\u0627\u0644\u06cc \u0628\u0631\u0627\u06cc \u0627\u0631\u0627\u0626\u0647 \u0635\u0641\u062d\u0627\u062a \u062e\u0637\u0627\u06cc \u067e\u0648\u06cc\u0627 \u0627\u0631\u0627\u0626\u0647 \u0645\u06cc \u062f\u0647\u0646\u062f.  \u0628\u0627 \u0686\u0646\u062f \u0645\u06cc\u0627\u0646 \u0627\u0641\u0632\u0627\u0631\u060c \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u0645 \u0647\u0631 \u0635\u0641\u062d\u0647 \u0627\u06cc \u0631\u0627 \u0628\u0627 \u0622\u0632\u0627\u062f\u06cc \u062a\u0642\u0631\u06cc\u0628\u0627 \u0628\u06cc \u062d\u062f \u0648 \u062d\u0635\u0631 \u0628\u0647 \u0635\u0641\u062d\u0647 \u062e\u0637\u0627 \u062a\u0628\u062f\u06cc\u0644 \u06a9\u0646\u06cc\u0645.<\/p>\n<p>\u062f\u0631 \u062d\u0627\u0644\u062a \u0627\u06cc\u062f\u0647\u200c\u0622\u0644\u060c \u0645\u0627\u06cc\u0644\u0645 \u06a9\u0647 \u0627\u06cc\u0646 \u0628\u0647 \u0628\u0633\u062a\u0647\u200c\u0627\u06cc \u062a\u0628\u062f\u06cc\u0644 \u0634\u0648\u062f \u06a9\u0647 \u0628\u0647 \u0648\u06cc\u0631\u0627\u06cc\u0634\u06af\u0631\u0647\u0627\u06cc \u0645\u062d\u062a\u0648\u0627 \u0627\u0645\u06a9\u0627\u0646 \u0645\u06cc\u200c\u062f\u0647\u062f \u0635\u0641\u062d\u0627\u062a \u062e\u0637\u0627 \u0631\u0627 \u0627\u0646\u062a\u062e\u0627\u0628 \u06a9\u0646\u0646\u062f\u060c \u062f\u0642\u06cc\u0642\u0627\u064b \u0645\u0627\u0646\u0646\u062f \u0628\u0633\u062a\u0647 PageNotFound\u060c \u0627\u0645\u0627 \u062f\u0631 \u062d\u0627\u0644 \u062d\u0627\u0636\u0631 \u062e\u0648\u0634\u062d\u0627\u0644\u0645 \u06a9\u0647 \u0641\u0642\u0637 \u0627\u0632 \u0627\u06cc\u0646 \u0642\u0637\u0639\u0647 \u06a9\u062f \u062f\u0631 \u067e\u0631\u0648\u0698\u0647\u200c\u0647\u0627\u06cc\u0645 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u0645.<\/p>\n<p>\u0627\u06cc\u0646 \u062a\u0645\u0627\u0645 \u0686\u06cc\u0632\u06cc \u0627\u0633\u062a \u06a9\u0647 \u0641\u0639\u0644\u0627\u064b \u0628\u0627\u06cc\u062f \u0628\u06af\u0648\u06cc\u0645.  \u0627\u0645\u06cc\u062f\u0648\u0627\u0631\u0645 \u0645\u0641\u06cc\u062f \u0628\u0648\u062f\u0647 \u0628\u0627\u0634\u062f \u0648 \u0634\u0627\u06cc\u062f \u0634\u0645\u0627 \u0631\u0627 \u062f\u0631 \u0648\u0628\u0644\u0627\u06af \u0628\u0639\u062f\u06cc \u062e\u0648\u062f \u0628\u0628\u06cc\u0646\u0645!  \ud83d\ude0a<\/p>\n<\/p><\/div>\n","protected":false},"excerpt":{"rendered":"<p>\u06cc\u06a9 \u0635\u0641\u062d\u0647 \u062e\u0637\u0627\u06cc \u062e\u0648\u0628 \u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u06cc\u06a9 \u062a\u062c\u0631\u0628\u0647 \u06a9\u0627\u0631\u0628\u0631\u06cc \u0646\u0627\u062e\u0648\u0634\u0627\u06cc\u0646\u062f \u0631\u0627 \u0628\u0647 \u0686\u06cc\u0632\u06cc \u0628\u0647\u062a\u0631 \u062a\u0628\u062f\u06cc\u0644 \u06a9\u0646\u062f\u060c \u062d\u062a\u06cc \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u0628\u0627\u0639\u062b \u062e\u0646\u062f\u0647 \u0634\u0648\u062f. \u062f\u0631 \u0627\u06cc\u0646 \u0645\u0642\u0627\u0644\u0647\u060c \u0627\u0628\u0632\u0627\u0631\u0647\u0627\u06cc\u06cc \u0631\u0627 \u06a9\u0647 .NET 6 \u0648 Umbraco 10 \u0627\u0631\u0627\u0626\u0647 \u0645\u06cc\u200c\u062f\u0647\u0646\u062f \u0628\u0631\u0631\u0633\u06cc \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645 \u0648 \u06cc\u06a9 \u0635\u0641\u062d\u0647 \u062e\u0637\u0627 \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645 \u06a9\u0647 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u062f \u062a\u0648\u0633\u0637 \u0648\u06cc\u0631\u0627\u06cc\u0634\u06af\u0631\u0647\u0627\u06cc \u0645\u062d\u062a\u0648\u0627 \u0628\u0627 \u06cc\u06a9 \u0628\u0627\u0632\u06af\u0634\u062a \u062b\u0627\u0628\u062a \u0648\u06cc\u0631\u0627\u06cc\u0634 \u0634\u0648\u062f\u060c \u0627\u06af\u0631 &hellip;<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"fifu_image_url":"","fifu_image_alt":"","footnotes":""},"categories":[339],"tags":[],"class_list":["post-23878","post","type-post","status-publish","format-standard","hentry","category-dev"],"_links":{"self":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts\/23878","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/comments?post=23878"}],"version-history":[{"count":0,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts\/23878\/revisions"}],"wp:attachment":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/media?parent=23878"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/categories?post=23878"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/tags?post=23878"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}