{"id":80897,"date":"2024-10-21T01:39:38","date_gmt":"2024-10-20T22:09:38","guid":{"rendered":"https:\/\/nabfollower.com\/blog\/the-guardian-middleware-handling-errors-globally-in-aspnet-222b\/"},"modified":"2024-10-21T01:39:38","modified_gmt":"2024-10-20T22:09:38","slug":"the-guardian-middleware-handling-errors-globally-in-aspnet-222b","status":"publish","type":"post","link":"https:\/\/nabfollower.com\/blog\/the-guardian-middleware-handling-errors-globally-in-aspnet-222b\/","title":{"rendered":"\u0645\u06cc\u0627\u0646 \u0627\u0641\u0632\u0627\u0631 \u06af\u0627\u0631\u062f\u06cc\u0646: \u0645\u062f\u06cc\u0631\u06cc\u062a \u062e\u0637\u0627\u0647\u0627 \u062f\u0631 \u0633\u0637\u062d \u062c\u0647\u0627\u0646\u06cc \u062f\u0631 ASP.NET"},"content":{"rendered":"<p>Summarize this content to 400 words in Persian Lang <\/p>\n<p>  \u0633\u0644\u0627\u0645 \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u062f! \ud83d\udc4b\ud83c\udffb<\/p>\n<p>\u062f\u0631 \u0686\u0646\u062f \u0645\u0642\u0627\u0644\u0647 \u06af\u0630\u0634\u062a\u0647\u060c \u0645\u0646 \u062f\u0631 \u0645\u0648\u0631\u062f \u0645\u0641\u0627\u0647\u06cc\u0645 \u062e\u0627\u0644\u0635 C# \u0635\u062d\u0628\u062a \u06a9\u0631\u062f\u0647 \u0627\u0645\u060c \u0686\u06cc\u0632\u0647\u0627\u06cc\u06cc \u0645\u0627\u0646\u0646\u062f \u0646\u0645\u0627\u06cc\u0646\u062f\u06af\u0627\u0646\u060c \u062a\u0648\u06a9\u0646 \u0647\u0627\u06cc \u0644\u063a\u0648\u060c IQueryable \u0648 \u063a\u06cc\u0631\u0647 \u062f\u0631 \u0627\u06cc\u0646 \u0645\u0642\u0627\u0644\u0647\u060c \u0645\u0627 \u0628\u0631 \u0631\u0648\u06cc \u0686\u06cc\u0632\u06cc \u062e\u0627\u0635 \u062a\u0645\u0631\u06a9\u0632 \u0645\u06cc \u06a9\u0646\u06cc\u0645\u060c \u06a9\u0647 \u0627\u06cc\u0646 \u0627\u0633\u062a \u0631\u0633\u06cc\u062f\u06af\u06cc \u0628\u0647 \u0627\u0633\u062a\u062b\u0646\u0627\u060c \u0627\u0645\u0627 \u062f\u0631 \u0645\u0642\u06cc\u0627\u0633 \u062c\u0647\u0627\u0646\u06cc \u0627\u0632 \u0637\u0631\u06cc\u0642 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0627\u062c\u0632\u0627\u06cc \u0645\u06cc\u0627\u0646 \u0627\u0641\u0632\u0627\u0631\u06cc \u06a9\u0647 \u062f\u0631 \u067e\u0631\u0648\u0698\u0647 \u0647\u0627\u06cc ASP \u062f\u0627\u0631\u06cc\u0645. \u0627\u06af\u0631 \u062c\u0627\u0644\u0628 \u0628\u0647 \u0646\u0638\u0631 \u0645\u06cc \u0631\u0633\u062f\u060c \u062f\u0633\u062a \u0648 \u067e\u0646\u062c\u0647 \u0646\u0631\u0645 \u06a9\u0646\u06cc\u062f \u0648 \u0627\u062c\u0627\u0632\u0647 \u062f\u0647\u06cc\u062f \u0646\u0645\u0627\u06cc\u0634 \u0631\u0627 \u0627\u062f\u0627\u0645\u0647 \u062f\u0647\u06cc\u0645!<\/p>\n<p>  \u0631\u0633\u06cc\u062f\u06af\u06cc \u0628\u0647 \u0627\u0633\u062a\u062b\u0646\u0627\u0621 \u0628\u0647 \u0637\u0648\u0631 \u06a9\u0644\u06cc<\/p>\n<p>\u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0627\u0633\u062a\u062b\u0646\u0627\u0647\u0627 \u062f\u0631 \u0628\u0631\u0646\u0627\u0645\u0647\u200c\u0647\u0627\u06cc \u0645\u0627 \u06cc\u06a9 \u0645\u06a9\u0627\u0646\u06cc\u0633\u0645 \u06a9\u0644\u06cc \u0627\u0633\u062a \u0648 \u0628\u0631\u0627\u06cc \u0645\u0648\u0627\u0631\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u062e\u062a\u0644\u0641 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f \u0648 \u0647\u0645\u06cc\u0634\u0647 \u0628\u0647 \u0631\u0648\u0634\u200c\u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641 \u0645\u0648\u0631\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0642\u0631\u0627\u0631 \u0645\u06cc\u200c\u06af\u06cc\u0631\u062f. \u062f\u0631 \u0628\u0631\u062e\u06cc \u0627\u0632 \u067e\u0627\u06cc\u06af\u0627\u0647 \u0647\u0627\u06cc \u06a9\u062f\u060c \u0627\u0632 \u0627\u0633\u062a\u062b\u0646\u0627\u0647\u0627\u06cc\u06cc \u0628\u0631\u0627\u06cc \u06a9\u0646\u062a\u0631\u0644 \u062c\u0631\u06cc\u0627\u0646 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u06cc\u062f\u060c \u0645\u0627\u0646\u0646\u062f \u0627\u06cc\u0646 \u0645\u0648\u0631\u062f:<\/p>\n<p>public async Task&lt;UserManagerResponse&gt; RegisterUserAsync(RegisterRequest request)<br \/>\n{<br \/>\n    var existingUser = await _userManager.FindByEmailAsync(request.Email!);<\/p>\n<p>    if (existingUser is not null)<br \/>\n        throw new UserCreationFailedException(message: &#8220;Email is taken&#8221;);<br \/>\n    \/\/ code removed for brevity&#8230;<br \/>\n}<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u062f\u0631 \u0645\u062b\u0627\u0644 \u0642\u0628\u0644\u06cc\u060c \u06cc\u06a9 \u0627\u0633\u062a\u062b\u0646\u0627 \u0633\u0641\u0627\u0631\u0634\u06cc \u0628\u0631\u0627\u06cc \u06a9\u0646\u062a\u0631\u0644 \u062c\u0631\u06cc\u0627\u0646 \u067e\u0631\u062a\u0627\u0628 \u0634\u062f\u0647 \u0627\u0633\u062a (\u06a9\u0627\u0631\u0628\u0631\u06cc \u06a9\u0647 \u0642\u0628\u0644\u0627\u064b \u0628\u0627 \u0627\u06cc\u0645\u06cc\u0644 \u0627\u0631\u0627\u0626\u0647 \u0634\u062f\u0647 \u062b\u0628\u062a \u0646\u0627\u0645 \u06a9\u0631\u062f\u0647 \u0627\u0633\u062a)\u060c \u0627\u06cc\u0646 \u0631\u0648\u06cc\u06a9\u0631\u062f \u06af\u0627\u0647\u06cc \u0627\u0648\u0642\u0627\u062a \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u062c\u0631\u06cc\u0627\u0646 \u06a9\u0646\u062a\u0631\u0644 \u0645\u0628\u062a\u0646\u06cc \u0628\u0631 \u0627\u0633\u062a\u062b\u0646\u0627. \u062f\u06cc\u06af\u0631\u0627\u0646 \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u0627\u0632 \u0686\u06cc\u0632 \u062f\u06cc\u06af\u0631\u06cc \u0645\u0627\u0646\u0646\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u0646\u062f \u0646\u062a\u06cc\u062c\u0647 \u0627\u0644\u06af\u0648\u06cc\u06cc \u0628\u0631\u0627\u06cc \u0645\u062d\u062f\u0648\u062f \u06a9\u0631\u062f\u0646 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0627\u0633\u062a\u062b\u0646\u0627\u0647\u0627 \u062f\u0631 \u067e\u0627\u06cc\u0647 \u06a9\u062f\u060c \u0632\u06cc\u0631\u0627 \u067e\u0631\u062a\u0627\u0628 \u0648 \u0631\u0633\u06cc\u062f\u06af\u06cc \u0628\u0647 \u0627\u0633\u062a\u062b\u0646\u0627\u0647\u0627 \u067e\u0631\u0647\u0632\u06cc\u0646\u0647 \u0627\u0633\u062a\u060c \u0632\u06cc\u0631\u0627 \u0622\u0646\u0647\u0627 \u0639\u0644\u0627\u0648\u0647 \u0628\u0631 \u062a\u062e\u0635\u06cc\u0635 \u06a9\u062f\u060c \u0628\u0627\u06cc\u062f \u067e\u0634\u062a\u0647 \u0641\u0631\u0627\u062e\u0648\u0627\u0646\u06cc \u0631\u0627 \u0645\u0646\u062a\u0634\u0631 \u06a9\u0646\u0646\u062f \u0648 \u062f\u0631 \u062c\u0627\u06cc \u062f\u06cc\u06af\u0631\u06cc \u062f\u0631 \u06a9\u062f \u0645\u062f\u06cc\u0631\u06cc\u062a \u0634\u0648\u0646\u062f. Exception \u0634\u06cc \u0627\u06af\u0631 \u0628\u0647 \u062a\u062c\u0632\u06cc\u0647 \u0648 \u062a\u062d\u0644\u06cc\u0644 \u0639\u0645\u06cc\u0642 \u062a\u0631 \u0639\u0644\u0627\u0642\u0647 \u0645\u0646\u062f \u0647\u0633\u062a\u06cc\u062f\u060c \u0627\u06cc\u0646 \u0645\u0642\u0627\u0644\u0647 \u0631\u0627 \u0628\u0631\u0631\u0633\u06cc \u06a9\u0646\u06cc\u062f:\u062a\u062c\u0632\u06cc\u0647 \u0648 \u062a\u062d\u0644\u06cc\u0644 \u0639\u0645\u0644\u06a9\u0631\u062f \u0627\u0633\u062a\u062b\u0646\u0627\u06cc\u06cc &#8211; \u0631\u0627\u0647\u0646\u0645\u0627\u06cc \u0628\u0627\u0632\u06cc\u06a9\u0646\u0627\u0646 \u0633\u06cc \u0634\u0627\u0631\u067e<\/p>\n<p>  \u0686\u0631\u0627 \u062c\u0647\u0627\u0646\u06cc \u0647\u0646\u062f\u0644\u06cc\u0646\u06af\u061f<\/p>\n<p>\u0628\u0627 \u0641\u0631\u0636 \u0627\u06cc\u0646\u06a9\u0647 \u0645\u0627 \u06cc\u06a9 \u067e\u0631\u0648\u0698\u0647 Web API \u062f\u0627\u0631\u06cc\u0645\u060c \u06a9\u062f\u06cc \u06a9\u0647 \u0627\u0633\u062a\u062b\u0646\u0627\u0647\u0627 \u0631\u0627 \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc \u06a9\u0646\u062f \u0628\u0627\u06cc\u062f \u062f\u0631 \u062c\u0627\u06cc\u06cc \u0645\u062f\u06cc\u0631\u06cc\u062a \u0634\u0648\u062f\u060c \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u0631\u0627 \u062f\u0631 \u06a9\u0646\u062a\u0631\u0644\u0631 \u0627\u0646\u062c\u0627\u0645 \u062f\u0647\u06cc\u062f\u060c \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0645\u062b\u0627\u0644 RegisterUser \u0646\u0642\u0637\u0647 \u067e\u0627\u06cc\u0627\u0646\u06cc \u06a9\u0647 \u0627\u0632 \u06a9\u062f \u0646\u0634\u0627\u0646 \u062f\u0627\u062f\u0647 \u0634\u062f\u0647 \u0642\u0628\u0644\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u062f:<\/p>\n<p>try<br \/>\n{<br \/>\n    var registerResult = await _authRepository<br \/>\n                               .RegisterUserAsync(request);<\/p>\n<p>    if (registerResult.Succeeded)<br \/>\n      &#8230;<br \/>\n}<br \/>\ncatch (UserCreationFailedException ex) \/\/ exception handled here and converted into an error response<br \/>\n{<br \/>\n    \/\/ sign up failed<br \/>\n    return BadRequest(new ApiErrorResponse<br \/>\n    {<br \/>\n        ErrorMessage = ex.Message<br \/>\n    });<br \/>\n}<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u0627\u06af\u0631 \u0627\u0632 \u0627\u0633\u062a\u062b\u0646\u0627\u0647\u0627 \u0628\u0631\u0627\u06cc \u06a9\u0646\u062a\u0631\u0644 \u062c\u0631\u06cc\u0627\u0646 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u062f\u060c \u06a9\u0647 \u06cc\u06a9 \u0633\u0646\u0627\u0631\u06cc\u0648\u06cc \u0628\u0633\u06cc\u0627\u0631 \u0631\u0627\u06cc\u062c \u062f\u0631 \u062a\u0648\u0633\u0639\u0647 \u0628\u0631\u0646\u0627\u0645\u0647\u200c\u0647\u0627 \u0627\u0633\u062a\u060c \u0632\u06cc\u0631\u0627 \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc \u0631\u0648\u0634\u06cc \u0622\u0633\u0627\u0646 \u0627\u0633\u062a\u060c \u0648 \u062a\u062c\u0631\u0628\u0647 \u062a\u0648\u0633\u0639\u0647\u200c\u062f\u0647\u0646\u062f\u0647\u200c\u0627\u06cc \u0639\u0627\u0644\u06cc \u062f\u0627\u0631\u062f \u0632\u06cc\u0631\u0627 \u0627\u062c\u0631\u0627\u06cc \u06a9\u062f \u0631\u0627 \u0633\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u062f (\u062f\u0631 \u0635\u0648\u0631\u062a\u06cc \u06a9\u0647 \u062f\u0631\u0633\u062a \u0627\u0646\u062c\u0627\u0645 \u0634\u0648\u062f)\u060c \u0634\u0645\u0627 \u0628\u0627\u06cc\u062f \u062a\u0645\u0627\u0645 \u0622\u0646 \u0627\u0633\u062a\u062b\u0646\u0627\u0647\u0627 \u0631\u0627 \u062f\u0631 \u0644\u0627\u06cc\u0647\u200c\u0627\u06cc \u062f\u0631 \u0628\u0631\u0646\u0627\u0645\u0647\u200c\u062a\u0627\u0646 \u067e\u06cc\u062f\u0627 \u06a9\u0646\u06cc\u062f \u062a\u0627 \u0622\u0646\u200c\u0647\u0627 \u0631\u0627 \u0628\u0647 \u067e\u0627\u0633\u062e\u200c\u0647\u0627\u06cc \u062e\u0637\u0627\u06cc \u0645\u0646\u0627\u0633\u0628\u06cc \u062a\u0628\u062f\u06cc\u0644 \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u06cc\u0627 \u0645\u0635\u0631\u0641\u200c\u06a9\u0646\u0646\u062f\u06af\u0627\u0646 API \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u0646\u062f \u0627\u0632 \u0622\u0646 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u0646\u062f.<\/p>\n<p>\u0634\u0645\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0628\u0628\u06cc\u0646\u06cc\u062f \u06a9\u0647 \u0627\u06cc\u0646 \u0628\u0647 \u06a9\u062c\u0627 \u0645\u06cc \u0631\u0648\u062f\u060c \u0627\u0636\u0627\u0641\u0647 \u06a9\u0631\u062f\u0646 try {} catch {} \u0628\u0644\u0648\u06a9\u200c\u0647\u0627\u06cc \u0645\u0648\u062c\u0648\u062f \u062f\u0631 \u0646\u0642\u0627\u0637 \u067e\u0627\u06cc\u0627\u0646\u06cc\u060c \u0633\u0631\u0648\u06cc\u0633\u200c\u0647\u0627 \u06cc\u0627 \u0647\u0631 \u0686\u06cc\u0632 \u062f\u06cc\u06af\u0631\u06cc \u06a9\u0647 \u0628\u0627\u0634\u062f\u060c \u062e\u0648\u0627\u0646\u0627\u06cc\u06cc \u06a9\u062f \u0634\u0645\u0627 \u0631\u0627 \u06a9\u0627\u0647\u0634 \u0645\u06cc\u200c\u062f\u0647\u062f \u0648 \u0646\u0648\u06cc\u0632 \u0632\u06cc\u0627\u062f\u06cc \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc\u200c\u06a9\u0646\u062f. \u0646\u0627\u06af\u0641\u062a\u0647 \u0646\u0645\u0627\u0646\u062f \u06a9\u0647 \u0645\u0633\u0626\u0648\u0644\u06cc\u062a \u0647\u0627\u06cc \u0628\u06cc\u0634\u062a\u0631\u06cc \u0631\u0627 \u0628\u0647 \u0628\u062e\u0634 \u0647\u0627\u06cc\u06cc \u0627\u0632 \u06a9\u062f \u0645\u0631\u062a\u0628\u0637 \u0645\u06cc \u06a9\u0646\u062f \u06a9\u0647 \u0628\u0631\u0627\u06cc \u0631\u0633\u06cc\u062f\u06af\u06cc \u0628\u0647 \u0627\u0633\u062a\u062b\u0646\u0627\u0626\u0627\u062a \u062f\u0631 \u0646\u0638\u0631 \u06af\u0631\u0641\u062a\u0647 \u0646\u0634\u062f\u0647 \u0627\u0646\u062f. \u0647\u0645\u0627\u0646\u0637\u0648\u0631 \u06a9\u0647 \u06a9\u0646\u062a\u0631\u0644\u0631 \u0634\u0645\u0627 \u0628\u0627\u06cc\u062f \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u06cc \u0631\u0627 \u062f\u0631\u06cc\u0627\u0641\u062a \u06a9\u0646\u062f\u060c \u0622\u0646 \u0631\u0627 \u0628\u0647 \u0639\u0645\u0644\u06a9\u0631\u062f \u0635\u062d\u06cc\u062d \u0646\u06af\u0627\u0634\u062a \u06a9\u0646\u06cc\u062f\u060c \u06a9\u0647 \u0633\u0631\u0648\u06cc\u0633 \u0645\u0646\u0627\u0633\u0628 \u0631\u0627 \u0641\u0631\u0627\u062e\u0648\u0627\u0646\u06cc \u0645\u06cc \u06a9\u0646\u062f \u06cc\u0627 \u067e\u0631\u0633 \u0648 \u062c\u0648\u06cc \u0645\u0646\u0627\u0633\u0628 \u0631\u0627 \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc \u062f\u0647\u062f \u0648 \u067e\u0627\u0633\u062e \u0631\u0627 \u0627\u0631\u0633\u0627\u0644 \u0645\u06cc \u06a9\u0646\u062f. \u0646\u0628\u0627\u06cc\u062f \u062d\u0633\u0627\u0628\u062f\u0627\u0631\u06cc \u0648 \u0631\u0633\u06cc\u062f\u06af\u06cc \u0628\u0647 \u0647\u0645\u0647 \u0627\u0646\u0648\u0627\u0639 \u0627\u0633\u062a\u062b\u0646\u0627\u0647\u0627\u06cc\u06cc \u0628\u0627\u0634\u062f \u06a9\u0647 \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u06cc\u06a9 \u0633\u0631\u0648\u06cc\u0633 \u06cc\u0627 \u0645\u062e\u0632\u0646 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u062f.<\/p>\n<p>\u062f\u0631 \u06cc\u06a9 \u0633\u0637\u062d \u0627\u0646\u062a\u0632\u0627\u0639\u06cc \u062a\u0631\u060c \u0627\u06af\u0631 \u0627\u0632 \u0686\u06cc\u0632\u06cc \u0645\u0627\u0646\u0646\u062f MediatR \u0648 CQRS \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u06cc\u062f\u060c \u0646\u0642\u0627\u0637 \u067e\u0627\u06cc\u0627\u0646\u06cc \u06a9\u0646\u062a\u0631\u0644\u0631 \u0634\u0645\u0627 \u0639\u0645\u062f\u062a\u0627\u064b \u0647\u0645\u06cc\u0634\u0647 \u062d\u0627\u0648\u06cc \u062e\u0637\u0648\u0637 \u0645\u0634\u0627\u0628\u0647\u06cc \u0627\u0632 \u06a9\u062f \u0647\u0633\u062a\u0646\u062f\u060c \u0645\u0627\u0646\u0646\u062f \u0627\u06cc\u0646:<\/p>\n[HttpPost(&#8220;login&#8221;)]\npublic async Task&lt;IActionResult&gt; LoginUserAsync([FromBody] RegisterRequest request, CancellationToken cancellationToken)<br \/>\n{<br \/>\n    var command = new Login.Command(request);<br \/>\n    var response = await _sender.Send(command, cancellationToken);<br \/>\n    return Ok(new ApiResponse&lt;LoginResponse&gt;(response)<br \/>\n    {<br \/>\n        Message = &#8220;User login succeeded&#8221;,<br \/>\n        IsSuccess = true<br \/>\n    });<br \/>\n}<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u062f\u0633\u062a\u0648\u0631\/\u067e\u0631\u0633 \u0648 \u062c\u0648 \u0631\u0627 \u0628\u0633\u0627\u0632\u06cc\u062f\u060c \u0622\u0646 \u0631\u0627 \u0627\u0631\u0633\u0627\u0644 \u06a9\u0646\u06cc\u062f\u060c \u067e\u0627\u0633\u062e\u06cc \u0631\u0627 \u0628\u0631\u06af\u0631\u062f\u0627\u0646\u06cc\u062f. <\/p>\n<p>\u0627\u0645\u0627 \u062f\u0631 \u0622\u0646 \u0635\u0648\u0631\u062a\u060c \u0686\u0647 \u06a9\u0633\u06cc \u0627\u0633\u062a\u062b\u0646\u0627\u0647\u0627\u06cc \u067e\u0631\u062a\u0627\u0628 \u0634\u062f\u0647 \u0631\u0627 \u0645\u062f\u06cc\u0631\u06cc\u062a \u0645\u06cc \u06a9\u0646\u062f\u061f \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f \u0645\u06cc\u0627\u0646 \u0627\u0641\u0632\u0627\u0631 \u0645\u062f\u06cc\u0631\u06cc\u062a \u062e\u0637\u0627\u06cc \u062c\u0647\u0627\u0646\u06cc\u060c \u0627\u06cc\u0646 \u06a9\u0627\u0645\u0644\u0627\u064b \u06cc\u06a9 \u0644\u0642\u0645\u0647 \u0627\u0633\u062a<\/p>\n<p>  \u0645\u06cc\u0627\u0646 \u0627\u0641\u0632\u0627\u0631 \u0645\u062f\u06cc\u0631\u06cc\u062a \u062e\u0637\u0627\u06cc \u062c\u0647\u0627\u0646\u06cc<\/p>\n<p>\u0648\u0642\u062a\u06cc \u0628\u0631\u0627\u06cc \u0627\u0648\u0644\u06cc\u0646 \u0628\u0627\u0631 \u0628\u0627 ASP \u0634\u0631\u0648\u0639 \u0645\u06cc \u06a9\u0646\u06cc\u062f\u060c \u0634\u0631\u0627\u06cc\u0637 \u0631\u0627 \u0645\u06cc \u0634\u0646\u0648\u06cc\u062f \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u062e\u0637 \u0644\u0648\u0644\u0647 \u0648 \u0645\u06cc\u0627\u0646 \u0627\u0641\u0632\u0627\u0631 \u0645\u0646 \u062f\u0631 \u0645\u0642\u0627\u0644\u0647 \u0642\u0628\u0644\u06cc \u062f\u0631 \u0645\u0648\u0631\u062f \u062e\u0637 \u0644\u0648\u0644\u0647 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u062f\u0631 ASP \u0648 \u0627\u06cc\u0646\u06a9\u0647 \u06cc\u06a9 \u0645\u06cc\u0627\u0646 \u0627\u0641\u0632\u0627\u0631 \u0686\u06cc\u0633\u062a \u0635\u062d\u0628\u062a \u06a9\u0631\u062f\u0647 \u0627\u0645\u060c \u0627\u06af\u0631 \u0639\u0644\u0627\u0642\u0647 \u0645\u0646\u062f \u0647\u0633\u062a\u06cc\u062f \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0622\u0646 \u0631\u0627 \u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u0628\u0631\u0631\u0633\u06cc \u06a9\u0646\u06cc\u062f:\u062e\u0637 \u0644\u0648\u0644\u0647 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u062f\u0631 ASP NET \u062a\u0648\u0636\u06cc\u062d \u062f\u0627\u062f\u0647 \u0634\u062f<\/p>\n<p>\u0628\u0647 \u0637\u0648\u0631 \u062e\u0644\u0627\u0635\u0647\u060c \u0647\u0631 \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u06cc \u06a9\u0647 \u0648\u0627\u0631\u062f \u0628\u0631\u0646\u0627\u0645\u0647 \u0645\u0627 \u0645\u06cc \u0634\u0648\u062f\u060c \u0628\u0627\u06cc\u062f \u0627\u0632 \u0637\u0631\u06cc\u0642 \u0622\u0646 \u062e\u0637 \u0644\u0648\u0644\u0647 \u0639\u0628\u0648\u0631 \u06a9\u0646\u062f\u060c \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0645\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u0645 \u0627\u0632 \u0622\u0646 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u0645 \u0648 \u06cc\u06a9 \u0645\u0648\u0631\u062f \u0648\u0627\u062d\u062f \u0642\u0631\u0627\u0631 \u062f\u0647\u06cc\u0645. try {} catch {} \u0628\u0644\u0648\u06a9 \u06a9\u0647 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u062f \u0627\u0646\u0648\u0627\u0639 \u0627\u0633\u062a\u062b\u0646\u0627\u0647\u0627 \u0631\u0627 \u0645\u062f\u06cc\u0631\u06cc\u062a \u06a9\u0646\u062f \u0648 \u067e\u0627\u0633\u062e \u0645\u0646\u0627\u0633\u0628 \u0631\u0627 \u0628\u0631 \u0627\u0633\u0627\u0633 \u0646\u0648\u0639 \u0627\u0633\u062a\u062b\u0646\u0627 \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc\u200c\u06a9\u0646\u062f \u062a\u0627 \u06a9\u0646\u062a\u0631\u0644\u200c\u06a9\u0646\u0646\u062f\u0647\u200c\u0647\u0627\u060c \u0633\u0631\u0648\u06cc\u0633\u200c\u0647\u0627 \u0648 \u0647\u0631 \u0686\u06cc\u0632 \u062f\u06cc\u06af\u0631\u06cc \u0645\u062c\u0628\u0648\u0631 \u0646\u0628\u0627\u0634\u0646\u062f \u062e\u0648\u062f \u0631\u0627 \u062f\u0631\u06af\u06cc\u0631 \u0641\u0631\u0622\u06cc\u0646\u062f \u0631\u0633\u06cc\u062f\u06af\u06cc \u0628\u0647 \u0627\u0633\u062a\u062b\u0646\u0627\u0647\u0627 \u06a9\u0646\u0646\u062f.<\/p>\n<p>  \u0627\u06cc\u062c\u0627\u062f \u06cc\u06a9 \u0645\u06cc\u0627\u0646 \u0627\u0641\u0632\u0627\u0631<\/p>\n<p>\u0627\u06cc\u062c\u0627\u062f \u06cc\u06a9 \u0645\u06cc\u0627\u0646 \u0627\u0641\u0632\u0627\u0631 \u062f\u0631 \u0648\u0627\u0642\u0639 \u0628\u0633\u06cc\u0627\u0631 \u0633\u0627\u062f\u0647 \u0627\u0633\u062a\u060c \u062f\u0648 \u0631\u0627\u0647 \u0628\u0631\u0627\u06cc \u0627\u06cc\u062c\u0627\u062f \u0622\u0646\u0647\u0627 \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u062f\u060c \u06cc\u06a9\u06cc \u0628\u0647 \u0635\u0648\u0631\u062a \u0642\u0631\u0627\u0631\u062f\u0627\u062f\u06cc \u0648 \u062f\u06cc\u06af\u0631\u06cc \u0628\u0627 \u067e\u06cc\u0627\u062f\u0647 \u0633\u0627\u0632\u06cc IMiddleware \u0631\u0627\u0628\u0637 \u0648 \u067e\u06cc\u0627\u062f\u0647 \u0633\u0627\u0632\u06cc \u0622\u0646 InvokeAsync \u0631\u0648\u0634\u060c \u0645\u0627 \u0627\u0632 \u0631\u0648\u0634 \u0627\u0648\u0644 \u06a9\u0647 \u0628\u0647 \u0635\u0648\u0631\u062a \u0642\u0631\u0627\u0631\u062f\u0627\u062f\u06cc \u0627\u0633\u062a \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u062e\u0648\u0627\u0647\u06cc\u0645 \u06a9\u0631\u062f.<\/p>\n<p>\u0645\u0646 \u062f\u0648\u0633\u062a \u062f\u0627\u0631\u0645 \u0645\u06cc\u0627\u0646 \u0627\u0641\u0632\u0627\u0631\u0647\u0627\u06cc \u062e\u0648\u062f \u0631\u0627 \u062f\u0631 \u067e\u0648\u0634\u0647 \u0627\u06cc \u0628\u0647 \u0646\u0627\u0645 Middlewares \u0646\u06af\u0647 \u062f\u0627\u0631\u0645\u060c \u0627\u0645\u0627 \u0627\u06cc\u0646 \u0628\u0647 \u0634\u0645\u0627 \u0628\u0633\u062a\u06af\u06cc \u062f\u0627\u0631\u062f \u06a9\u0647 \u06a9\u062c\u0627 \u06a9\u0644\u0627\u0633 \u0631\u0627 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f.<\/p>\n<p>\u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u06a9\u062f \u0645\u0648\u0631\u062f \u0646\u06cc\u0627\u0632 \u0628\u0631\u0627\u06cc Middleware \u0645\u0627 \u0622\u0645\u062f\u0647 \u0627\u0633\u062a:<\/p>\n<p>public class ErrorHandlingMiddleware<br \/>\n{<br \/>\n    private readonly RequestDelegate _next;<\/p>\n<p>    public ErrorHandlingMiddleware(RequestDelegate next)<br \/>\n    {<br \/>\n        _next = next;<br \/>\n    }<\/p>\n<p>    public async Task InvokeAsync(HttpContext context)<br \/>\n    {<br \/>\n        try<br \/>\n        {<br \/>\n            await _next(_context);<br \/>\n        }<br \/>\n        catch (Exception ex)<br \/>\n        {<br \/>\n            await HandleExceptionAsync(context, ex);<br \/>\n        }<br \/>\n    }<\/p>\n<p>    private async Task HandleExceptionAsync(HttpContext context, Exception exception)<br \/>\n    {<\/p>\n<p>    }<br \/>\n}<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u0645\u0646 \u0628\u0627 \u062a\u0648\u0636\u06cc\u062d \u062c\u0631\u06cc\u0627\u0646 \u0634\u0631\u0648\u0639 \u0645\u06cc \u06a9\u0646\u0645 \u0648 \u0633\u067e\u0633 \u0627\u062c\u0631\u0627\u06cc \u0622\u0646 \u0631\u0627 \u0634\u0631\u0648\u0639 \u0645\u06cc \u06a9\u0646\u0645 HandleExceptionAsync \u0631\u0648\u0634<\/p>\n<p>\u0627\u0632 \u0622\u0646\u062c\u0627\u06cc\u06cc \u06a9\u0647 \u0647\u0631 \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u06cc \u0627\u0632 \u0637\u0631\u06cc\u0642 \u0627\u06cc\u0646 \u0645\u06cc\u0627\u0646\u200c\u0627\u0641\u0632\u0627\u0631 \u0627\u0631\u0633\u0627\u0644 \u0645\u06cc\u200c\u0634\u0648\u062f\u060c \u062f\u0631 \u0647\u0631 \u0646\u0642\u0637\u0647 \u0627\u0632 \u0628\u0631\u0646\u0627\u0645\u0647\u060c \u0632\u0645\u0627\u0646\u06cc \u06a9\u0647 \u06cc\u06a9 \u0627\u0633\u062a\u062b\u0646\u0627 \u067e\u0631\u062a\u0627\u0628 \u0645\u06cc\u200c\u0634\u0648\u062f\u060c \u0627\u06cc\u0646\u062c\u0627 \u062c\u0627\u06cc\u06cc \u0627\u0633\u062a \u06a9\u0647 \u06af\u0631\u0641\u062a\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f \u0648 \u0631\u0633\u06cc\u062f\u06af\u06cc \u0645\u06cc\u200c\u0634\u0648\u062f. \u0627\u06cc\u0646 \u0627\u0645\u0631 \u0645\u0646\u0637\u0642 \u0631\u0633\u06cc\u062f\u06af\u06cc \u0628\u0647 \u0627\u0633\u062a\u062b\u0646\u0627\u0647\u0627 \u0631\u0627 \u0645\u062a\u0645\u0631\u06a9\u0632\u062a\u0631 \u0645\u06cc \u06a9\u0646\u062f \u0632\u06cc\u0631\u0627 \u0627\u06a9\u0646\u0648\u0646 \u0627\u0633\u062a\u062b\u0646\u0627\u0647\u0627\u06cc\u06cc \u06a9\u0647 \u0628\u0647 \u062a\u062c\u0631\u0628\u0647 \u06a9\u0627\u0631\u0628\u0631 \u0645\u0631\u0628\u0648\u0637 \u0645\u06cc \u0634\u0648\u0646\u062f \u062f\u0631 \u0627\u06cc\u0646 \u0645\u06a9\u0627\u0646 \u0648\u0627\u062d\u062f \u0631\u0633\u06cc\u062f\u06af\u06cc \u0645\u06cc \u0634\u0648\u0646\u062f. \u0645\u0627\u0646\u0646\u062f \u0627\u06cc\u0646 \u0645\u06cc\u0627\u0646\u200c\u0627\u0641\u0632\u0627\u0631 \u0627\u0633\u062a\u062b\u0646\u0627\u0647\u0627\u06cc\u06cc \u0631\u0627 \u06a9\u0647 \u0628\u0647 \u06a9\u0627\u0631\u0628\u0631 \u0639\u0644\u0627\u0642\u0647 \u0645\u0646\u062f \u0647\u0633\u062a\u0646\u062f \u0631\u0627 \u0645\u06cc\u200c\u06af\u06cc\u0631\u062f\u060c \u06cc\u06a9 \u067e\u0627\u0633\u062e \u062e\u0637\u0627\u06cc \u0645\u0639\u0646\u06cc\u200c\u062f\u0627\u0631 \u0627\u0632 \u0622\u0646\u200c\u0647\u0627 \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc\u200c\u06a9\u0646\u062f \u0648 \u0622\u0646 \u0631\u0627 \u062f\u0631 \u067e\u0627\u0633\u062e \u0627\u0631\u0633\u0627\u0644 \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/p>\n<p>  \u067e\u06cc\u0627\u062f\u0647 \u0633\u0627\u0632\u06cc \u0645\u0646\u0637\u0642 \u0631\u0633\u06cc\u062f\u06af\u06cc \u0628\u0647 \u062e\u0637\u0627<\/p>\n<p>\u0647\u0645\u0647 \u0627\u0633\u062a\u062b\u0646\u0627\u0647\u0627 \u0627\u0632 Exception \u06a9\u0644\u0627\u0633 \u067e\u0627\u06cc\u0647\u060c \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0627\u0633\u062a\u062b\u0646\u0627\u06cc\u06cc \u06a9\u0647 \u0645\u06cc\u200c\u06af\u06cc\u0631\u06cc\u0645\u060c \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u062f \u0628\u0647 \u0647\u0631 \u0627\u0633\u062a\u062b\u0646\u0627\u06cc \u0633\u0641\u0627\u0631\u0634\u06cc \u0627\u0631\u0633\u0627\u0644 \u0634\u0648\u062f\u060c \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u062f\u0631 HandleExceptionAsync \u0631\u0648\u0634\u060c \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u0645 \u0645\u0648\u0627\u0631\u062f \u0632\u06cc\u0631 \u0631\u0627 \u0627\u0646\u062c\u0627\u0645 \u062f\u0647\u06cc\u0645:<\/p>\n<p>private async Task HandleExceptionAsync(HttpContext context, Exception exception)<br \/>\n{<br \/>\n    HttpStatusCode code = HttpStatusCode.InternalServerError;<br \/>\n    string errorMessage = string.Empty;<\/p>\n<p>    \/\/ Handle the different exception types here<br \/>\n    switch(Exception)<br \/>\n    {<br \/>\n        case AuthenticationFailedException ex:<br \/>\n            code = HttpStatusCode.BadRequest;<br \/>\n            errorMessage = ex.Message;<br \/>\n            break;<br \/>\n        case NotAuthorizedException ex:<br \/>\n            code = HttpStatusCode.Unauthorized;<br \/>\n            errorMessage = ex.Message;<br \/>\n            break;<br \/>\n        case OperationFailedException ex:<br \/>\n            code = HttpStatusCode.BadRequest;<br \/>\n            errorMessage = ex.Message;<br \/>\n            break;<br \/>\n        case Exception ex:<br \/>\n            code = HttpStatusCode.InternalServerError;<br \/>\n            errorMessage = &#8220;Something went wrong. Please try again&#8221;;<br \/>\n            break;<br \/>\n    }<\/p>\n<p>    context.Response.ContentType = &#8220;application\/json&#8221;;<br \/>\n    context.Response.StatusCode = (int)code;<br \/>\n    var errorResponse = new ApiErrorResponse(code, errorMessage);<br \/>\n    var serializedErrorResponse = JsonSerializer.Serialize(errorResponse);<\/p>\n<p>    await context.Response.WriteAsync(serializedErrorResponse);<br \/>\n}<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u0646\u0648\u0639 \u0628\u0627 \u0646\u0627\u0645 ApiErrorResponse \u06cc\u06a9 \u06a9\u0644\u0627\u0633 \u0633\u0627\u062f\u0647 \u0628\u0627 \u062f\u0648 \u0648\u06cc\u0698\u06af\u06cc \u0627\u0633\u062a \u06a9\u0647 \u067e\u06cc\u0627\u0645 \u062e\u0637\u0627 \u0648 \u06a9\u062f \u0648\u0636\u0639\u06cc\u062a HTTP \u0631\u0627 \u0645\u062d\u0635\u0648\u0631 \u0645\u06cc \u06a9\u0646\u062f \u0648 \u062f\u0627\u0631\u0627\u06cc \u0627\u0639\u0644\u0627\u0646 \u0632\u06cc\u0631 \u0627\u0633\u062a:<\/p>\n<p>public class ApiErrorResponse<br \/>\n{<br \/>\n    public string? ErrorMessage { get; set; }<\/p>\n<p>    public int StatusCode { get; set; }<\/p>\n<p>    public ApiErrorResponse(string errorMessage)<br \/>\n    {<br \/>\n        ErrorMessage = errorMessage;<br \/>\n    }<\/p>\n<p>    public ApiErrorResponse(string errorMessage, int statusCode)<br \/>\n    {<br \/>\n        ErrorMessage = errorMessage;<br \/>\n        StatusCode = statusCode;<br \/>\n    }<br \/>\n}<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u06a9\u062f \u062f\u0631 \u0627\u06cc\u0646 \u0631\u0648\u0634 \u062a\u0646\u0647\u0627 \u06cc\u06a9 \u06a9\u0627\u0631 \u0631\u0627 \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc \u062f\u0647\u062f\u060c \u0628\u0647 \u0646\u0648\u0639 \u0627\u0633\u062a\u062b\u0646\u0627 \u0646\u06af\u0627\u0647 \u0645\u06cc \u06a9\u0646\u062f \u0648 \u06a9\u062f \u0648\u0636\u0639\u06cc\u062a \u067e\u0627\u0633\u062e \u0648 \u0645\u062d\u062a\u0648\u0627\u06cc \u0622\u0646 \u0631\u0627 \u0628\u0631 \u0631\u0648\u06cc \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0627\u0633\u062a\u062e\u0631\u0627\u062c \u0634\u062f\u0647 \u0627\u0632 \u0627\u0633\u062a\u062b\u0646\u0627 \u062a\u0646\u0638\u06cc\u0645 \u0645\u06cc \u06a9\u0646\u062f. <\/p>\n<p>\u0648\u0642\u062a\u06cc \u0646\u0648\u0639 \u062c\u062f\u06cc\u062f\u06cc \u0627\u0632 \u0627\u0633\u062a\u062b\u0646\u0627 \u0631\u0627 \u0645\u0639\u0631\u0641\u06cc \u0645\u06cc \u06a9\u0646\u06cc\u062f\u060c \u0641\u0642\u0637 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f a \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f case \u0628\u0631\u0627\u06cc \u0622\u0646 \u062f\u0631 switch \u0628\u0644\u0627\u06a9 \u06a9\u0646\u06cc\u062f\u060c \u0648 \u0645\u06cc\u0627\u0646\u200c\u0627\u0641\u0632\u0627\u0631 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u062f \u0627\u06cc\u0646 \u0646\u0648\u0639 \u0627\u0633\u062a\u062b\u0646\u0627 \u0631\u0627 \u0646\u06cc\u0632 \u0645\u062f\u06cc\u0631\u06cc\u062a \u06a9\u0646\u062f\u060c \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u062a\u0646\u0647\u0627 \u06a9\u0627\u0631\u06cc \u06a9\u0647 \u0628\u0627\u06cc\u062f \u0627\u0646\u062c\u0627\u0645 \u062f\u0647\u06cc\u062f \u0627\u06cc\u0646 \u0627\u0633\u062a \u06a9\u0647 \u0627\u0633\u062a\u062b\u0646\u0627\u06cc \u062c\u062f\u06cc\u062f \u062e\u0648\u062f \u0631\u0627 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f\u060c \u0634\u0631\u0648\u0639 \u06a9\u0646\u06cc\u062f \u0628\u0647 \u067e\u0631\u062a\u0627\u0628 \u0622\u0646 \u062f\u0631 \u0647\u0631 \u06a9\u062c\u0627 \u06a9\u0647 \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u06cc\u062f\u060c \u0648 \u0641\u0642\u0637 \u06cc\u06a9 \u0645\u0648\u0631\u062f \u0628\u0631\u0627\u06cc \u0622\u0646 \u062f\u0631 \u0645\u06cc\u0627\u0646\u200c\u0627\u0641\u0632\u0627\u0631 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f\u060c \u0648 \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u0631\u0627 \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc\u200c\u062f\u0647\u062f. \u0628\u062a\u0648\u0627\u0646\u06cc\u062f \u0627\u0632 \u062a\u0628\u062f\u06cc\u0644 \u0622\u0646 \u0628\u0647 \u0686\u06cc\u0632\u06cc \u06a9\u0647 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0628\u0631\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u06cc\u0627 \u0645\u0635\u0631\u0641 \u06a9\u0646\u0646\u062f\u06af\u0627\u0646 API \u062e\u0648\u062f \u0627\u0631\u0633\u0627\u0644 \u06a9\u0646\u06cc\u062f \u0645\u0631\u0627\u0642\u0628\u062a \u06a9\u0646\u06cc\u062f.<\/p>\n<p>  \u0645\u0632\u06cc\u062a \u0627\u0636\u0627\u0641\u06cc<\/p>\n<p>\u06cc\u06a9\u06cc \u062f\u06cc\u06af\u0631 \u0627\u0632 \u0645\u0632\u0627\u06cc\u0627\u06cc \u0627\u06cc\u0646 \u0631\u0648\u06cc\u06a9\u0631\u062f\u060c \u0627\u06cc\u0646 \u0627\u0633\u062a \u06a9\u0647 \u0628\u0647 \u062f\u0644\u06cc\u0644 \u0627\u06cc\u0646\u06a9\u0647 \u0645\u06a9\u0627\u0646 \u0645\u0631\u06a9\u0632\u06cc \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 \u0631\u0633\u06cc\u062f\u06af\u06cc \u0628\u0647 \u0627\u0633\u062a\u062b\u0646\u0627\u0647\u0627 \u0627\u0633\u062a\u060c \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0627\u062f\u0627\u0645\u0647 \u062f\u0647\u06cc\u062f \u0648 \u06cc\u06a9 \u0646\u0645\u0648\u0646\u0647 \u0644\u0627\u06af\u0631 \u062a\u0632\u0631\u06cc\u0642 \u06a9\u0646\u06cc\u062f\u060c \u0648 \u0647\u0645\u0686\u0646\u06cc\u0646 \u062b\u0628\u062a \u0627\u0633\u062a\u062b\u0646\u0627\u0647\u0627 \u0631\u0627 \u062f\u0631 \u0647\u0645\u0627\u0646 \u0645\u06cc\u0627\u0646 \u0627\u0641\u0632\u0627\u0631 \u0645\u062a\u0645\u0631\u06a9\u0632 \u06a9\u0646\u06cc\u062f:<\/p>\n<p>public class ErrorHandlingMiddleware<br \/>\n{<br \/>\n    private readonly RequestDelegate _next;<br \/>\n    private readonly ILogger&lt;ErrorHandlingMiddleware&gt; _logger;<\/p>\n<p>    public ErrorHandlingMiddleware(RequestDelegate next, ILogger&lt;ErrorHandlingMiddleware&gt; logger)<br \/>\n    {<br \/>\n        _next = next;<br \/>\n        _logger = logger;<br \/>\n    }<\/p>\n<p>    public async Task InvokeAsync(HttpContext context)<br \/>\n    {<br \/>\n        try<br \/>\n        {<br \/>\n            await _next(_context);<br \/>\n        }<br \/>\n        catch (Exception ex)<br \/>\n        {<br \/>\n            await HandleExceptionAsync();<br \/>\n            _logger.LogError(ex);<br \/>\n        }<br \/>\n    }<br \/>\n    &#8230;<br \/>\n}<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u062f\u0631 \u0646\u0647\u0627\u06cc\u062a\u060c \u0627\u06a9\u0646\u0648\u0646 \u06a9\u0647 \u0645\u06cc\u0627\u0646 \u0627\u0641\u0632\u0627\u0631 \u0645\u0627 \u062f\u0631 \u062c\u0627\u06cc \u062e\u0648\u062f \u0642\u0631\u0627\u0631 \u062f\u0627\u0631\u062f\u060c \u0628\u0627\u06cc\u062f \u062c\u0644\u0648 \u0628\u0631\u0648\u06cc\u0645 \u0648 \u0622\u0646 \u0631\u0627 \u0628\u0647 \u062e\u0637 \u0644\u0648\u0644\u0647 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u0645. \u062f\u0631 Program.cs\u060c \u0627\u06cc\u0646 \u062e\u0637 \u0631\u0627 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f:<\/p>\n<p>app.UseMiddleware&lt;ErrorHandlingMiddleware&gt;();<\/p>\n<p>if (app.Environment.IsDevelopment())<br \/>\n{<br \/>\n    app.UseSwagger();<br \/>\n    app.UseSwaggerUI();<br \/>\n}<\/p>\n<p>app.UseHttpsRedirection();<\/p>\n<p>app.UseAuthentication();<br \/>\napp.UseAuthorization();<\/p>\n<p>app.MapControllers();<\/p>\n<p>app.Run();<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\ud83d\udca1 \u062a\u0648\u062c\u0647: \u062b\u0628\u062a \u06a9\u0631\u062f\u0646 \u062e\u0637\u0627\u06cc \u0645\u062f\u06cc\u0631\u06cc\u062a \u0645\u06cc\u0627\u0646\u200c\u0627\u0641\u0632\u0627\u0631 \u0627\u0628\u062a\u062f\u0627 \u062f\u0631 \u062e\u0637 \u0644\u0648\u0644\u0647 \u0628\u0633\u06cc\u0627\u0631 \u0645\u0647\u0645 \u0627\u0633\u062a\u060c \u0632\u06cc\u0631\u0627 \u0627\u06cc\u0646 \u0627\u0645\u0631 \u0628\u0647 \u0622\u0646 \u0627\u062c\u0627\u0632\u0647 \u0645\u06cc\u200c\u062f\u0647\u062f \u062a\u0627 \u0627\u0633\u062a\u062b\u0646\u0627\u0647\u0627\u06cc\u06cc \u0631\u0627 \u06a9\u0647 \u062f\u0631 \u0645\u0624\u0644\u0641\u0647\u200c\u0647\u0627\u06cc \u0645\u06cc\u0627\u0646\u200c\u0627\u0641\u0632\u0627\u0631 \u0628\u0639\u062f\u06cc \u062f\u0631 \u0632\u0646\u062c\u06cc\u0631\u0647 \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc\u200c\u0634\u0648\u0646\u062f \u0645\u062f\u06cc\u0631\u06cc\u062a \u06a9\u0646\u062f\u060c \u0648 \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u062f \u062f\u0631 \u0646\u0647\u0627\u06cc\u062a \u0628\u0627 \u0647\u0631 \u0627\u0633\u062a\u062b\u0646\u0627\u06cc\u06cc \u06a9\u0647 \u0628\u0631\u0646\u0627\u0645\u0647 \u0645\u0627 \u0642\u0631\u0627\u0631 \u0627\u0633\u062a \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u062f\u060c \u0645\u0642\u0627\u0628\u0644\u0647 \u06a9\u0646\u062f. \u0627\u06cc\u0646 \u0627\u0633\u062a\u062b\u0646\u0627 \u062f\u0631 \u0637\u0648\u0644 \u067e\u0631\u062f\u0627\u0632\u0634 \u06cc\u06a9 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u062f\u0631\u06cc\u0627\u0641\u062a\u06cc \u0631\u062e \u062f\u0627\u062f\u0647 \u0627\u0633\u062a.<\/p>\n<p>  \u0646\u062a\u06cc\u062c\u0647 \u06af\u06cc\u0631\u06cc<\/p>\n<p>\u0627\u0648\u0647! \u062a\u0627 \u0622\u062e\u0631\u0634 \u0631\u0633\u06cc\u062f\u06cc\u0645! \u0645\u0627 \u0645\u06a9\u0627\u0646\u06cc\u0633\u0645 \u0645\u062f\u06cc\u0631\u06cc\u062a \u062e\u0637\u0627\u06cc \u062c\u0647\u0627\u0646\u06cc \u0631\u0627 \u0628\u0631\u0631\u0633\u06cc\u060c \u0628\u062d\u062b \u0648 \u0627\u062c\u0631\u0627 \u06a9\u0631\u062f\u06cc\u0645! \u06a9\u0645\u0627\u0646 \u0628\u06af\u06cc\u0631!\u067e\u0633\u062a \u0628\u0633\u06cc\u0627\u0631 \u0637\u0648\u0644\u0627\u0646\u06cc \u0628\u0648\u062f\u060c \u0627\u0645\u0627 \u0645\u0627 \u0628\u0647 \u0686\u06cc\u0632\u0647\u0627\u06cc \u0632\u06cc\u0627\u062f\u06cc \u0646\u06af\u0627\u0647 \u06a9\u0631\u062f\u0647 \u0627\u06cc\u0645\u060c \u0627\u0632 \u062f\u0631\u06a9 \u0647\u062f\u0641 \u0645\u062f\u06cc\u0631\u06cc\u062a \u0627\u0633\u062a\u062b\u0646\u0627 \u062f\u0631 \u0633\u0637\u062d \u062c\u0647\u0627\u0646\u06cc\u060c \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc\u0627\u0646 \u0627\u0641\u0632\u0627\u0631\u060c \u0648 \u062f\u06cc\u062f\u0646 \u0646\u062d\u0648\u0647 \u0631\u0633\u06cc\u062f\u06af\u06cc \u0628\u0647 \u0627\u0633\u062a\u062b\u0646\u0627\u0647\u0627. \u0627\u06a9\u0646\u0648\u0646 \u0628\u0631\u0627\u06cc \u0647\u0631 \u0633\u0646\u0627\u0631\u06cc\u0648\u06cc\u06cc \u06a9\u0647 \u0645\u06cc\u200c\u062e\u0648\u0627\u0647\u06cc\u062f \u0628\u0627 \u0627\u0633\u062a\u062b\u0646\u0627\u0647\u0627 \u062f\u0631 \u0633\u0637\u062d \u062c\u0647\u0627\u0646\u06cc \u0648 \u0645\u062a\u0645\u0631\u06a9\u0632\u062a\u0631 \u0645\u0642\u0627\u0628\u0644\u0647 \u06a9\u0646\u06cc\u062f\u060c \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0627\u0632 \u0627\u06cc\u0646 \u0631\u0648\u06cc\u06a9\u0631\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f \u0648 \u0622\u0646 \u0631\u0627 \u0645\u062a\u0646\u0627\u0633\u0628 \u0628\u0627 \u0646\u06cc\u0627\u0632\u0647\u0627\u06cc \u062e\u0648\u062f \u062a\u0646\u0638\u06cc\u0645 \u06a9\u0646\u06cc\u062f! <\/p>\n<p>  \u0628\u0627 \u062a\u0634\u06a9\u0631 \u0628\u0631\u0627\u06cc \u062e\u0648\u0627\u0646\u062f\u0646!<\/p>\n<div data-article-id=\"2040175\" id=\"article-body\">\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_84 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=\"Toggle Table of Content\"><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\/the-guardian-middleware-handling-errors-globally-in-aspnet-222b\/#%D8%B3%D9%84%D8%A7%D9%85_%D9%88%D8%AC%D9%88%D8%AF_%D8%AF%D8%A7%D8%B1%D8%AF_%F0%9F%91%8B%F0%9F%8F%BB\" >\u0633\u0644\u0627\u0645 \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u062f! \ud83d\udc4b\ud83c\udffb<\/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\/the-guardian-middleware-handling-errors-globally-in-aspnet-222b\/#%D8%B1%D8%B3%DB%8C%D8%AF%DA%AF%DB%8C_%D8%A8%D9%87_%D8%A7%D8%B3%D8%AA%D8%AB%D9%86%D8%A7%D8%A1_%D8%A8%D9%87_%D8%B7%D9%88%D8%B1_%DA%A9%D9%84%DB%8C\" >\u0631\u0633\u06cc\u062f\u06af\u06cc \u0628\u0647 \u0627\u0633\u062a\u062b\u0646\u0627\u0621 \u0628\u0647 \u0637\u0648\u0631 \u06a9\u0644\u06cc<\/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\/the-guardian-middleware-handling-errors-globally-in-aspnet-222b\/#%DA%86%D8%B1%D8%A7_%D8%AC%D9%87%D8%A7%D9%86%DB%8C_%D9%87%D9%86%D8%AF%D9%84%DB%8C%D9%86%DA%AF%D8%9F\" >\u0686\u0631\u0627 \u062c\u0647\u0627\u0646\u06cc \u0647\u0646\u062f\u0644\u06cc\u0646\u06af\u061f<\/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\/the-guardian-middleware-handling-errors-globally-in-aspnet-222b\/#%D9%85%DB%8C%D8%A7%D9%86_%D8%A7%D9%81%D8%B2%D8%A7%D8%B1_%D9%85%D8%AF%DB%8C%D8%B1%DB%8C%D8%AA_%D8%AE%D8%B7%D8%A7%DB%8C_%D8%AC%D9%87%D8%A7%D9%86%DB%8C\" >\u0645\u06cc\u0627\u0646 \u0627\u0641\u0632\u0627\u0631 \u0645\u062f\u06cc\u0631\u06cc\u062a \u062e\u0637\u0627\u06cc \u062c\u0647\u0627\u0646\u06cc<\/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\/the-guardian-middleware-handling-errors-globally-in-aspnet-222b\/#%D8%A7%DB%8C%D8%AC%D8%A7%D8%AF_%DB%8C%DA%A9_%D9%85%DB%8C%D8%A7%D9%86_%D8%A7%D9%81%D8%B2%D8%A7%D8%B1\" >\u0627\u06cc\u062c\u0627\u062f \u06cc\u06a9 \u0645\u06cc\u0627\u0646 \u0627\u0641\u0632\u0627\u0631<\/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\/the-guardian-middleware-handling-errors-globally-in-aspnet-222b\/#%D9%BE%DB%8C%D8%A7%D8%AF%D9%87_%D8%B3%D8%A7%D8%B2%DB%8C_%D9%85%D9%86%D8%B7%D9%82_%D8%B1%D8%B3%DB%8C%D8%AF%DA%AF%DB%8C_%D8%A8%D9%87_%D8%AE%D8%B7%D8%A7\" >\u067e\u06cc\u0627\u062f\u0647 \u0633\u0627\u0632\u06cc \u0645\u0646\u0637\u0642 \u0631\u0633\u06cc\u062f\u06af\u06cc \u0628\u0647 \u062e\u0637\u0627<\/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\/the-guardian-middleware-handling-errors-globally-in-aspnet-222b\/#%D9%85%D8%B2%DB%8C%D8%AA_%D8%A7%D8%B6%D8%A7%D9%81%DB%8C\" >\u0645\u0632\u06cc\u062a \u0627\u0636\u0627\u0641\u06cc<\/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\/the-guardian-middleware-handling-errors-globally-in-aspnet-222b\/#%D9%86%D8%AA%DB%8C%D8%AC%D9%87_%DA%AF%DB%8C%D8%B1%DB%8C\" >\u0646\u062a\u06cc\u062c\u0647 \u06af\u06cc\u0631\u06cc<\/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\/the-guardian-middleware-handling-errors-globally-in-aspnet-222b\/#%D8%A8%D8%A7_%D8%AA%D8%B4%DA%A9%D8%B1_%D8%A8%D8%B1%D8%A7%DB%8C_%D8%AE%D9%88%D8%A7%D9%86%D8%AF%D9%86\" >\u0628\u0627 \u062a\u0634\u06a9\u0631 \u0628\u0631\u0627\u06cc \u062e\u0648\u0627\u0646\u062f\u0646!<\/a><\/li><\/ul><\/nav><\/div>\n<h2><span class=\"ez-toc-section\" id=\"%D8%B3%D9%84%D8%A7%D9%85_%D9%88%D8%AC%D9%88%D8%AF_%D8%AF%D8%A7%D8%B1%D8%AF_%F0%9F%91%8B%F0%9F%8F%BB\"><\/span>\n<p>  \u0633\u0644\u0627\u0645 \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u062f! \ud83d\udc4b\ud83c\udffb<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u062f\u0631 \u0686\u0646\u062f \u0645\u0642\u0627\u0644\u0647 \u06af\u0630\u0634\u062a\u0647\u060c \u0645\u0646 \u062f\u0631 \u0645\u0648\u0631\u062f \u0645\u0641\u0627\u0647\u06cc\u0645 \u062e\u0627\u0644\u0635 C# \u0635\u062d\u0628\u062a \u06a9\u0631\u062f\u0647 \u0627\u0645\u060c \u0686\u06cc\u0632\u0647\u0627\u06cc\u06cc \u0645\u0627\u0646\u0646\u062f \u0646\u0645\u0627\u06cc\u0646\u062f\u06af\u0627\u0646\u060c \u062a\u0648\u06a9\u0646 \u0647\u0627\u06cc \u0644\u063a\u0648\u060c <code>IQueryable<\/code> \u0648 \u063a\u06cc\u0631\u0647 \u062f\u0631 \u0627\u06cc\u0646 \u0645\u0642\u0627\u0644\u0647\u060c \u0645\u0627 \u0628\u0631 \u0631\u0648\u06cc \u0686\u06cc\u0632\u06cc \u062e\u0627\u0635 \u062a\u0645\u0631\u06a9\u0632 \u0645\u06cc \u06a9\u0646\u06cc\u0645\u060c \u06a9\u0647 \u0627\u06cc\u0646 \u0627\u0633\u062a <strong>\u0631\u0633\u06cc\u062f\u06af\u06cc \u0628\u0647 \u0627\u0633\u062a\u062b\u0646\u0627<\/strong>\u060c \u0627\u0645\u0627 \u062f\u0631 \u0645\u0642\u06cc\u0627\u0633 \u062c\u0647\u0627\u0646\u06cc \u0627\u0632 \u0637\u0631\u06cc\u0642 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0627\u062c\u0632\u0627\u06cc \u0645\u06cc\u0627\u0646 \u0627\u0641\u0632\u0627\u0631\u06cc \u06a9\u0647 \u062f\u0631 \u067e\u0631\u0648\u0698\u0647 \u0647\u0627\u06cc ASP \u062f\u0627\u0631\u06cc\u0645. \u0627\u06af\u0631 \u062c\u0627\u0644\u0628 \u0628\u0647 \u0646\u0638\u0631 \u0645\u06cc \u0631\u0633\u062f\u060c \u062f\u0633\u062a \u0648 \u067e\u0646\u062c\u0647 \u0646\u0631\u0645 \u06a9\u0646\u06cc\u062f \u0648 \u0627\u062c\u0627\u0632\u0647 \u062f\u0647\u06cc\u062f \u0646\u0645\u0627\u06cc\u0634 \u0631\u0627 \u0627\u062f\u0627\u0645\u0647 \u062f\u0647\u06cc\u0645!<\/p>\n<h2><span class=\"ez-toc-section\" id=\"%D8%B1%D8%B3%DB%8C%D8%AF%DA%AF%DB%8C_%D8%A8%D9%87_%D8%A7%D8%B3%D8%AA%D8%AB%D9%86%D8%A7%D8%A1_%D8%A8%D9%87_%D8%B7%D9%88%D8%B1_%DA%A9%D9%84%DB%8C\"><\/span>\n<p>  \u0631\u0633\u06cc\u062f\u06af\u06cc \u0628\u0647 \u0627\u0633\u062a\u062b\u0646\u0627\u0621 \u0628\u0647 \u0637\u0648\u0631 \u06a9\u0644\u06cc<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0627\u0633\u062a\u062b\u0646\u0627\u0647\u0627 \u062f\u0631 \u0628\u0631\u0646\u0627\u0645\u0647\u200c\u0647\u0627\u06cc \u0645\u0627 \u06cc\u06a9 \u0645\u06a9\u0627\u0646\u06cc\u0633\u0645 \u06a9\u0644\u06cc \u0627\u0633\u062a \u0648 \u0628\u0631\u0627\u06cc \u0645\u0648\u0627\u0631\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u062e\u062a\u0644\u0641 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f \u0648 \u0647\u0645\u06cc\u0634\u0647 \u0628\u0647 \u0631\u0648\u0634\u200c\u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641 \u0645\u0648\u0631\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0642\u0631\u0627\u0631 \u0645\u06cc\u200c\u06af\u06cc\u0631\u062f. \u062f\u0631 \u0628\u0631\u062e\u06cc \u0627\u0632 \u067e\u0627\u06cc\u06af\u0627\u0647 \u0647\u0627\u06cc \u06a9\u062f\u060c \u0627\u0632 \u0627\u0633\u062a\u062b\u0646\u0627\u0647\u0627\u06cc\u06cc \u0628\u0631\u0627\u06cc \u06a9\u0646\u062a\u0631\u0644 \u062c\u0631\u06cc\u0627\u0646 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u06cc\u062f\u060c \u0645\u0627\u0646\u0646\u062f \u0627\u06cc\u0646 \u0645\u0648\u0631\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight csharp\"><code>\n<span class=\"k\">public<\/span> <span class=\"k\">async<\/span> <span class=\"n\">Task<\/span><span class=\"p\">&lt;<\/span><span class=\"n\">UserManagerResponse<\/span><span class=\"p\">&gt;<\/span> <span class=\"nf\">RegisterUserAsync<\/span><span class=\"p\">(<\/span><span class=\"n\">RegisterRequest<\/span> <span class=\"n\">request<\/span><span class=\"p\">)<\/span>\n<span class=\"p\">{<\/span>\n    <span class=\"kt\">var<\/span> <span class=\"n\">existingUser<\/span> <span class=\"p\">=<\/span> <span class=\"k\">await<\/span> <span class=\"n\">_userManager<\/span><span class=\"p\">.<\/span><span class=\"nf\">FindByEmailAsync<\/span><span class=\"p\">(<\/span><span class=\"n\">request<\/span><span class=\"p\">.<\/span><span class=\"n\">Email<\/span><span class=\"p\">!);<\/span>\n\n    <span class=\"k\">if<\/span> <span class=\"p\">(<\/span><span class=\"n\">existingUser<\/span> <span class=\"k\">is<\/span> <span class=\"k\">not<\/span> <span class=\"k\">null<\/span><span class=\"p\">)<\/span>\n        <span class=\"k\">throw<\/span> <span class=\"k\">new<\/span> <span class=\"nf\">UserCreationFailedException<\/span><span class=\"p\">(<\/span><span class=\"n\">message<\/span><span class=\"p\">:<\/span> <span class=\"s\">\"Email is taken\"<\/span><span class=\"p\">);<\/span>\n    <span class=\"c1\">\/\/ code removed for brevity...<\/span>\n<span class=\"p\">}<\/span>\n\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>\u062f\u0631 \u0645\u062b\u0627\u0644 \u0642\u0628\u0644\u06cc\u060c \u06cc\u06a9 \u0627\u0633\u062a\u062b\u0646\u0627 \u0633\u0641\u0627\u0631\u0634\u06cc \u0628\u0631\u0627\u06cc \u06a9\u0646\u062a\u0631\u0644 \u062c\u0631\u06cc\u0627\u0646 \u067e\u0631\u062a\u0627\u0628 \u0634\u062f\u0647 \u0627\u0633\u062a (\u06a9\u0627\u0631\u0628\u0631\u06cc \u06a9\u0647 \u0642\u0628\u0644\u0627\u064b \u0628\u0627 \u0627\u06cc\u0645\u06cc\u0644 \u0627\u0631\u0627\u0626\u0647 \u0634\u062f\u0647 \u062b\u0628\u062a \u0646\u0627\u0645 \u06a9\u0631\u062f\u0647 \u0627\u0633\u062a)\u060c \u0627\u06cc\u0646 \u0631\u0648\u06cc\u06a9\u0631\u062f \u06af\u0627\u0647\u06cc \u0627\u0648\u0642\u0627\u062a \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 <strong>\u062c\u0631\u06cc\u0627\u0646 \u06a9\u0646\u062a\u0631\u0644 \u0645\u0628\u062a\u0646\u06cc \u0628\u0631 \u0627\u0633\u062a\u062b\u0646\u0627<\/strong>. \u062f\u06cc\u06af\u0631\u0627\u0646 \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u0627\u0632 \u0686\u06cc\u0632 \u062f\u06cc\u06af\u0631\u06cc \u0645\u0627\u0646\u0646\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u0646\u062f <strong>\u0646\u062a\u06cc\u062c\u0647<\/strong> \u0627\u0644\u06af\u0648\u06cc\u06cc \u0628\u0631\u0627\u06cc \u0645\u062d\u062f\u0648\u062f \u06a9\u0631\u062f\u0646 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0627\u0633\u062a\u062b\u0646\u0627\u0647\u0627 \u062f\u0631 \u067e\u0627\u06cc\u0647 \u06a9\u062f\u060c \u0632\u06cc\u0631\u0627 \u067e\u0631\u062a\u0627\u0628 \u0648 \u0631\u0633\u06cc\u062f\u06af\u06cc \u0628\u0647 \u0627\u0633\u062a\u062b\u0646\u0627\u0647\u0627 \u067e\u0631\u0647\u0632\u06cc\u0646\u0647 \u0627\u0633\u062a\u060c \u0632\u06cc\u0631\u0627 \u0622\u0646\u0647\u0627 \u0639\u0644\u0627\u0648\u0647 \u0628\u0631 \u062a\u062e\u0635\u06cc\u0635 \u06a9\u062f\u060c \u0628\u0627\u06cc\u062f \u067e\u0634\u062a\u0647 \u0641\u0631\u0627\u062e\u0648\u0627\u0646\u06cc \u0631\u0627 \u0645\u0646\u062a\u0634\u0631 \u06a9\u0646\u0646\u062f \u0648 \u062f\u0631 \u062c\u0627\u06cc \u062f\u06cc\u06af\u0631\u06cc \u062f\u0631 \u06a9\u062f \u0645\u062f\u06cc\u0631\u06cc\u062a \u0634\u0648\u0646\u062f. <code>Exception<\/code> \u0634\u06cc \u0627\u06af\u0631 \u0628\u0647 \u062a\u062c\u0632\u06cc\u0647 \u0648 \u062a\u062d\u0644\u06cc\u0644 \u0639\u0645\u06cc\u0642 \u062a\u0631 \u0639\u0644\u0627\u0642\u0647 \u0645\u0646\u062f \u0647\u0633\u062a\u06cc\u062f\u060c \u0627\u06cc\u0646 \u0645\u0642\u0627\u0644\u0647 \u0631\u0627 \u0628\u0631\u0631\u0633\u06cc \u06a9\u0646\u06cc\u062f:<br \/>\u062a\u062c\u0632\u06cc\u0647 \u0648 \u062a\u062d\u0644\u06cc\u0644 \u0639\u0645\u0644\u06a9\u0631\u062f \u0627\u0633\u062a\u062b\u0646\u0627\u06cc\u06cc &#8211; \u0631\u0627\u0647\u0646\u0645\u0627\u06cc \u0628\u0627\u0632\u06cc\u06a9\u0646\u0627\u0646 \u0633\u06cc \u0634\u0627\u0631\u067e<\/p>\n<h2><span class=\"ez-toc-section\" id=\"%DA%86%D8%B1%D8%A7_%D8%AC%D9%87%D8%A7%D9%86%DB%8C_%D9%87%D9%86%D8%AF%D9%84%DB%8C%D9%86%DA%AF%D8%9F\"><\/span>\n<p>  \u0686\u0631\u0627 \u062c\u0647\u0627\u0646\u06cc \u0647\u0646\u062f\u0644\u06cc\u0646\u06af\u061f<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u0628\u0627 \u0641\u0631\u0636 \u0627\u06cc\u0646\u06a9\u0647 \u0645\u0627 \u06cc\u06a9 \u067e\u0631\u0648\u0698\u0647 Web API \u062f\u0627\u0631\u06cc\u0645\u060c \u06a9\u062f\u06cc \u06a9\u0647 \u0627\u0633\u062a\u062b\u0646\u0627\u0647\u0627 \u0631\u0627 \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc \u06a9\u0646\u062f \u0628\u0627\u06cc\u062f \u062f\u0631 \u062c\u0627\u06cc\u06cc \u0645\u062f\u06cc\u0631\u06cc\u062a \u0634\u0648\u062f\u060c \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u0631\u0627 \u062f\u0631 \u06a9\u0646\u062a\u0631\u0644\u0631 \u0627\u0646\u062c\u0627\u0645 \u062f\u0647\u06cc\u062f\u060c \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0645\u062b\u0627\u0644 <code>RegisterUser<\/code> \u0646\u0642\u0637\u0647 \u067e\u0627\u06cc\u0627\u0646\u06cc \u06a9\u0647 \u0627\u0632 \u06a9\u062f \u0646\u0634\u0627\u0646 \u062f\u0627\u062f\u0647 \u0634\u062f\u0647 \u0642\u0628\u0644\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight csharp\"><code>\n<span class=\"k\">try<\/span>\n<span class=\"p\">{<\/span>\n    <span class=\"kt\">var<\/span> <span class=\"n\">registerResult<\/span> <span class=\"p\">=<\/span> <span class=\"k\">await<\/span> <span class=\"n\">_authRepository<\/span>\n                               <span class=\"p\">.<\/span><span class=\"nf\">RegisterUserAsync<\/span><span class=\"p\">(<\/span><span class=\"n\">request<\/span><span class=\"p\">);<\/span>\n\n    <span class=\"k\">if<\/span> <span class=\"p\">(<\/span><span class=\"n\">registerResult<\/span><span class=\"p\">.<\/span><span class=\"n\">Succeeded<\/span><span class=\"p\">)<\/span>\n      <span class=\"p\">...<\/span>\n<span class=\"p\">}<\/span>\n<span class=\"k\">catch<\/span> <span class=\"p\">(<\/span><span class=\"n\">UserCreationFailedException<\/span> <span class=\"n\">ex<\/span><span class=\"p\">)<\/span> <span class=\"c1\">\/\/ exception handled here and converted into an error response<\/span>\n<span class=\"p\">{<\/span>\n    <span class=\"c1\">\/\/ sign up failed<\/span>\n    <span class=\"k\">return<\/span> <span class=\"nf\">BadRequest<\/span><span class=\"p\">(<\/span><span class=\"k\">new<\/span> <span class=\"n\">ApiErrorResponse<\/span>\n    <span class=\"p\">{<\/span>\n        <span class=\"n\">ErrorMessage<\/span> <span class=\"p\">=<\/span> <span class=\"n\">ex<\/span><span class=\"p\">.<\/span><span class=\"n\">Message<\/span>\n    <span class=\"p\">});<\/span>\n<span class=\"p\">}<\/span>\n\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\u0632 \u0627\u0633\u062a\u062b\u0646\u0627\u0647\u0627 \u0628\u0631\u0627\u06cc \u06a9\u0646\u062a\u0631\u0644 \u062c\u0631\u06cc\u0627\u0646 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u062f\u060c \u06a9\u0647 \u06cc\u06a9 \u0633\u0646\u0627\u0631\u06cc\u0648\u06cc \u0628\u0633\u06cc\u0627\u0631 \u0631\u0627\u06cc\u062c \u062f\u0631 \u062a\u0648\u0633\u0639\u0647 \u0628\u0631\u0646\u0627\u0645\u0647\u200c\u0647\u0627 \u0627\u0633\u062a\u060c \u0632\u06cc\u0631\u0627 \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc \u0631\u0648\u0634\u06cc \u0622\u0633\u0627\u0646 \u0627\u0633\u062a\u060c \u0648 \u062a\u062c\u0631\u0628\u0647 \u062a\u0648\u0633\u0639\u0647\u200c\u062f\u0647\u0646\u062f\u0647\u200c\u0627\u06cc \u0639\u0627\u0644\u06cc \u062f\u0627\u0631\u062f \u0632\u06cc\u0631\u0627 \u0627\u062c\u0631\u0627\u06cc \u06a9\u062f \u0631\u0627 \u0633\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u062f (\u062f\u0631 \u0635\u0648\u0631\u062a\u06cc \u06a9\u0647 \u062f\u0631\u0633\u062a \u0627\u0646\u062c\u0627\u0645 \u0634\u0648\u062f)\u060c \u0634\u0645\u0627 \u0628\u0627\u06cc\u062f \u062a\u0645\u0627\u0645 \u0622\u0646 \u0627\u0633\u062a\u062b\u0646\u0627\u0647\u0627 \u0631\u0627 \u062f\u0631 \u0644\u0627\u06cc\u0647\u200c\u0627\u06cc \u062f\u0631 \u0628\u0631\u0646\u0627\u0645\u0647\u200c\u062a\u0627\u0646 \u067e\u06cc\u062f\u0627 \u06a9\u0646\u06cc\u062f \u062a\u0627 \u0622\u0646\u200c\u0647\u0627 \u0631\u0627 \u0628\u0647 \u067e\u0627\u0633\u062e\u200c\u0647\u0627\u06cc \u062e\u0637\u0627\u06cc \u0645\u0646\u0627\u0633\u0628\u06cc \u062a\u0628\u062f\u06cc\u0644 \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u06cc\u0627 \u0645\u0635\u0631\u0641\u200c\u06a9\u0646\u0646\u062f\u06af\u0627\u0646 API \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u0646\u062f \u0627\u0632 \u0622\u0646 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u0646\u062f.<\/p>\n<p>\u0634\u0645\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0628\u0628\u06cc\u0646\u06cc\u062f \u06a9\u0647 \u0627\u06cc\u0646 \u0628\u0647 \u06a9\u062c\u0627 \u0645\u06cc \u0631\u0648\u062f\u060c \u0627\u0636\u0627\u0641\u0647 \u06a9\u0631\u062f\u0646 <code>try {} catch {}<\/code> \u0628\u0644\u0648\u06a9\u200c\u0647\u0627\u06cc \u0645\u0648\u062c\u0648\u062f \u062f\u0631 \u0646\u0642\u0627\u0637 \u067e\u0627\u06cc\u0627\u0646\u06cc\u060c \u0633\u0631\u0648\u06cc\u0633\u200c\u0647\u0627 \u06cc\u0627 \u0647\u0631 \u0686\u06cc\u0632 \u062f\u06cc\u06af\u0631\u06cc \u06a9\u0647 \u0628\u0627\u0634\u062f\u060c \u062e\u0648\u0627\u0646\u0627\u06cc\u06cc \u06a9\u062f \u0634\u0645\u0627 \u0631\u0627 \u06a9\u0627\u0647\u0634 \u0645\u06cc\u200c\u062f\u0647\u062f \u0648 \u0646\u0648\u06cc\u0632 \u0632\u06cc\u0627\u062f\u06cc \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc\u200c\u06a9\u0646\u062f. \u0646\u0627\u06af\u0641\u062a\u0647 \u0646\u0645\u0627\u0646\u062f \u06a9\u0647 \u0645\u0633\u0626\u0648\u0644\u06cc\u062a \u0647\u0627\u06cc \u0628\u06cc\u0634\u062a\u0631\u06cc \u0631\u0627 \u0628\u0647 \u0628\u062e\u0634 \u0647\u0627\u06cc\u06cc \u0627\u0632 \u06a9\u062f \u0645\u0631\u062a\u0628\u0637 \u0645\u06cc \u06a9\u0646\u062f \u06a9\u0647 \u0628\u0631\u0627\u06cc \u0631\u0633\u06cc\u062f\u06af\u06cc \u0628\u0647 \u0627\u0633\u062a\u062b\u0646\u0627\u0626\u0627\u062a \u062f\u0631 \u0646\u0638\u0631 \u06af\u0631\u0641\u062a\u0647 \u0646\u0634\u062f\u0647 \u0627\u0646\u062f. \u0647\u0645\u0627\u0646\u0637\u0648\u0631 \u06a9\u0647 \u06a9\u0646\u062a\u0631\u0644\u0631 \u0634\u0645\u0627 \u0628\u0627\u06cc\u062f \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u06cc \u0631\u0627 \u062f\u0631\u06cc\u0627\u0641\u062a \u06a9\u0646\u062f\u060c \u0622\u0646 \u0631\u0627 \u0628\u0647 \u0639\u0645\u0644\u06a9\u0631\u062f \u0635\u062d\u06cc\u062d \u0646\u06af\u0627\u0634\u062a \u06a9\u0646\u06cc\u062f\u060c \u06a9\u0647 \u0633\u0631\u0648\u06cc\u0633 \u0645\u0646\u0627\u0633\u0628 \u0631\u0627 \u0641\u0631\u0627\u062e\u0648\u0627\u0646\u06cc \u0645\u06cc \u06a9\u0646\u062f \u06cc\u0627 \u067e\u0631\u0633 \u0648 \u062c\u0648\u06cc \u0645\u0646\u0627\u0633\u0628 \u0631\u0627 \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc \u062f\u0647\u062f \u0648 \u067e\u0627\u0633\u062e \u0631\u0627 \u0627\u0631\u0633\u0627\u0644 \u0645\u06cc \u06a9\u0646\u062f. \u0646\u0628\u0627\u06cc\u062f \u062d\u0633\u0627\u0628\u062f\u0627\u0631\u06cc \u0648 \u0631\u0633\u06cc\u062f\u06af\u06cc \u0628\u0647 \u0647\u0645\u0647 \u0627\u0646\u0648\u0627\u0639 \u0627\u0633\u062a\u062b\u0646\u0627\u0647\u0627\u06cc\u06cc \u0628\u0627\u0634\u062f \u06a9\u0647 \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u06cc\u06a9 \u0633\u0631\u0648\u06cc\u0633 \u06cc\u0627 \u0645\u062e\u0632\u0646 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u062f.<\/p>\n<p>\u062f\u0631 \u06cc\u06a9 \u0633\u0637\u062d \u0627\u0646\u062a\u0632\u0627\u0639\u06cc \u062a\u0631\u060c \u0627\u06af\u0631 \u0627\u0632 \u0686\u06cc\u0632\u06cc \u0645\u0627\u0646\u0646\u062f MediatR \u0648 CQRS \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u06cc\u062f\u060c \u0646\u0642\u0627\u0637 \u067e\u0627\u06cc\u0627\u0646\u06cc \u06a9\u0646\u062a\u0631\u0644\u0631 \u0634\u0645\u0627 \u0639\u0645\u062f\u062a\u0627\u064b \u0647\u0645\u06cc\u0634\u0647 \u062d\u0627\u0648\u06cc \u062e\u0637\u0648\u0637 \u0645\u0634\u0627\u0628\u0647\u06cc \u0627\u0632 \u06a9\u062f \u0647\u0633\u062a\u0646\u062f\u060c \u0645\u0627\u0646\u0646\u062f \u0627\u06cc\u0646:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight csharp\"><code>\n<span class=\"p\">[<\/span><span class=\"nf\">HttpPost<\/span><span class=\"p\">(<\/span><span class=\"s\">\"login\"<\/span><span class=\"p\">)]<\/span>\n<span class=\"k\">public<\/span> <span class=\"k\">async<\/span> <span class=\"n\">Task<\/span><span class=\"p\">&lt;<\/span><span class=\"n\">IActionResult<\/span><span class=\"p\">&gt;<\/span> <span class=\"nf\">LoginUserAsync<\/span><span class=\"p\">([<\/span><span class=\"n\">FromBody<\/span><span class=\"p\">]<\/span> <span class=\"n\">RegisterRequest<\/span> <span class=\"n\">request<\/span><span class=\"p\">,<\/span> <span class=\"n\">CancellationToken<\/span> <span class=\"n\">cancellationToken<\/span><span class=\"p\">)<\/span>\n<span class=\"p\">{<\/span>\n    <span class=\"kt\">var<\/span> <span class=\"n\">command<\/span> <span class=\"p\">=<\/span> <span class=\"k\">new<\/span> <span class=\"n\">Login<\/span><span class=\"p\">.<\/span><span class=\"nf\">Command<\/span><span class=\"p\">(<\/span><span class=\"n\">request<\/span><span class=\"p\">);<\/span>\n    <span class=\"kt\">var<\/span> <span class=\"n\">response<\/span> <span class=\"p\">=<\/span> <span class=\"k\">await<\/span> <span class=\"n\">_sender<\/span><span class=\"p\">.<\/span><span class=\"nf\">Send<\/span><span class=\"p\">(<\/span><span class=\"n\">command<\/span><span class=\"p\">,<\/span> <span class=\"n\">cancellationToken<\/span><span class=\"p\">);<\/span>\n    <span class=\"k\">return<\/span> <span class=\"nf\">Ok<\/span><span class=\"p\">(<\/span><span class=\"k\">new<\/span> <span class=\"n\">ApiResponse<\/span><span class=\"p\">&lt;<\/span><span class=\"n\">LoginResponse<\/span><span class=\"p\">&gt;(<\/span><span class=\"n\">response<\/span><span class=\"p\">)<\/span>\n    <span class=\"p\">{<\/span>\n        <span class=\"n\">Message<\/span> <span class=\"p\">=<\/span> <span class=\"s\">\"User login succeeded\"<\/span><span class=\"p\">,<\/span>\n        <span class=\"n\">IsSuccess<\/span> <span class=\"p\">=<\/span> <span class=\"k\">true<\/span>\n    <span class=\"p\">});<\/span>\n<span class=\"p\">}<\/span>\n\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>\u062f\u0633\u062a\u0648\u0631\/\u067e\u0631\u0633 \u0648 \u062c\u0648 \u0631\u0627 \u0628\u0633\u0627\u0632\u06cc\u062f\u060c \u0622\u0646 \u0631\u0627 \u0627\u0631\u0633\u0627\u0644 \u06a9\u0646\u06cc\u062f\u060c \u067e\u0627\u0633\u062e\u06cc \u0631\u0627 \u0628\u0631\u06af\u0631\u062f\u0627\u0646\u06cc\u062f. <\/p>\n<p>\u0627\u0645\u0627 \u062f\u0631 \u0622\u0646 \u0635\u0648\u0631\u062a\u060c \u0686\u0647 \u06a9\u0633\u06cc \u0627\u0633\u062a\u062b\u0646\u0627\u0647\u0627\u06cc \u067e\u0631\u062a\u0627\u0628 \u0634\u062f\u0647 \u0631\u0627 \u0645\u062f\u06cc\u0631\u06cc\u062a \u0645\u06cc \u06a9\u0646\u062f\u061f \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f <strong>\u0645\u06cc\u0627\u0646 \u0627\u0641\u0632\u0627\u0631 \u0645\u062f\u06cc\u0631\u06cc\u062a \u062e\u0637\u0627\u06cc \u062c\u0647\u0627\u0646\u06cc<\/strong>\u060c \u0627\u06cc\u0646 \u06a9\u0627\u0645\u0644\u0627\u064b \u06cc\u06a9 \u0644\u0642\u0645\u0647 \u0627\u0633\u062a<\/p>\n<h2><span class=\"ez-toc-section\" id=\"%D9%85%DB%8C%D8%A7%D9%86_%D8%A7%D9%81%D8%B2%D8%A7%D8%B1_%D9%85%D8%AF%DB%8C%D8%B1%DB%8C%D8%AA_%D8%AE%D8%B7%D8%A7%DB%8C_%D8%AC%D9%87%D8%A7%D9%86%DB%8C\"><\/span>\n<p>  \u0645\u06cc\u0627\u0646 \u0627\u0641\u0632\u0627\u0631 \u0645\u062f\u06cc\u0631\u06cc\u062a \u062e\u0637\u0627\u06cc \u062c\u0647\u0627\u0646\u06cc<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u0648\u0642\u062a\u06cc \u0628\u0631\u0627\u06cc \u0627\u0648\u0644\u06cc\u0646 \u0628\u0627\u0631 \u0628\u0627 ASP \u0634\u0631\u0648\u0639 \u0645\u06cc \u06a9\u0646\u06cc\u062f\u060c \u0634\u0631\u0627\u06cc\u0637 \u0631\u0627 \u0645\u06cc \u0634\u0646\u0648\u06cc\u062f <strong>\u062f\u0631\u062e\u0648\u0627\u0633\u062a \u062e\u0637 \u0644\u0648\u0644\u0647<\/strong> \u0648 <strong>\u0645\u06cc\u0627\u0646 \u0627\u0641\u0632\u0627\u0631<\/strong> \u0645\u0646 \u062f\u0631 \u0645\u0642\u0627\u0644\u0647 \u0642\u0628\u0644\u06cc \u062f\u0631 \u0645\u0648\u0631\u062f \u062e\u0637 \u0644\u0648\u0644\u0647 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u062f\u0631 ASP \u0648 \u0627\u06cc\u0646\u06a9\u0647 \u06cc\u06a9 \u0645\u06cc\u0627\u0646 \u0627\u0641\u0632\u0627\u0631 \u0686\u06cc\u0633\u062a \u0635\u062d\u0628\u062a \u06a9\u0631\u062f\u0647 \u0627\u0645\u060c \u0627\u06af\u0631 \u0639\u0644\u0627\u0642\u0647 \u0645\u0646\u062f \u0647\u0633\u062a\u06cc\u062f \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0622\u0646 \u0631\u0627 \u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u0628\u0631\u0631\u0633\u06cc \u06a9\u0646\u06cc\u062f:<br \/>\u062e\u0637 \u0644\u0648\u0644\u0647 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u062f\u0631 ASP NET \u062a\u0648\u0636\u06cc\u062d \u062f\u0627\u062f\u0647 \u0634\u062f<\/p>\n<p>\u0628\u0647 \u0637\u0648\u0631 \u062e\u0644\u0627\u0635\u0647\u060c \u0647\u0631 \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u06cc \u06a9\u0647 \u0648\u0627\u0631\u062f \u0628\u0631\u0646\u0627\u0645\u0647 \u0645\u0627 \u0645\u06cc \u0634\u0648\u062f\u060c \u0628\u0627\u06cc\u062f \u0627\u0632 \u0637\u0631\u06cc\u0642 \u0622\u0646 \u062e\u0637 \u0644\u0648\u0644\u0647 \u0639\u0628\u0648\u0631 \u06a9\u0646\u062f\u060c \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0645\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u0645 \u0627\u0632 \u0622\u0646 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u0645 \u0648 \u06cc\u06a9 \u0645\u0648\u0631\u062f \u0648\u0627\u062d\u062f \u0642\u0631\u0627\u0631 \u062f\u0647\u06cc\u0645. <code>try {} catch {}<\/code> \u0628\u0644\u0648\u06a9 \u06a9\u0647 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u062f \u0627\u0646\u0648\u0627\u0639 \u0627\u0633\u062a\u062b\u0646\u0627\u0647\u0627 \u0631\u0627 \u0645\u062f\u06cc\u0631\u06cc\u062a \u06a9\u0646\u062f \u0648 \u067e\u0627\u0633\u062e \u0645\u0646\u0627\u0633\u0628 \u0631\u0627 \u0628\u0631 \u0627\u0633\u0627\u0633 \u0646\u0648\u0639 \u0627\u0633\u062a\u062b\u0646\u0627 \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc\u200c\u06a9\u0646\u062f \u062a\u0627 \u06a9\u0646\u062a\u0631\u0644\u200c\u06a9\u0646\u0646\u062f\u0647\u200c\u0647\u0627\u060c \u0633\u0631\u0648\u06cc\u0633\u200c\u0647\u0627 \u0648 \u0647\u0631 \u0686\u06cc\u0632 \u062f\u06cc\u06af\u0631\u06cc \u0645\u062c\u0628\u0648\u0631 \u0646\u0628\u0627\u0634\u0646\u062f \u062e\u0648\u062f \u0631\u0627 \u062f\u0631\u06af\u06cc\u0631 \u0641\u0631\u0622\u06cc\u0646\u062f \u0631\u0633\u06cc\u062f\u06af\u06cc \u0628\u0647 \u0627\u0633\u062a\u062b\u0646\u0627\u0647\u0627 \u06a9\u0646\u0646\u062f.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"%D8%A7%DB%8C%D8%AC%D8%A7%D8%AF_%DB%8C%DA%A9_%D9%85%DB%8C%D8%A7%D9%86_%D8%A7%D9%81%D8%B2%D8%A7%D8%B1\"><\/span>\n<p>  \u0627\u06cc\u062c\u0627\u062f \u06cc\u06a9 \u0645\u06cc\u0627\u0646 \u0627\u0641\u0632\u0627\u0631<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u0627\u06cc\u062c\u0627\u062f \u06cc\u06a9 \u0645\u06cc\u0627\u0646 \u0627\u0641\u0632\u0627\u0631 \u062f\u0631 \u0648\u0627\u0642\u0639 \u0628\u0633\u06cc\u0627\u0631 \u0633\u0627\u062f\u0647 \u0627\u0633\u062a\u060c \u062f\u0648 \u0631\u0627\u0647 \u0628\u0631\u0627\u06cc \u0627\u06cc\u062c\u0627\u062f \u0622\u0646\u0647\u0627 \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u062f\u060c \u06cc\u06a9\u06cc \u0628\u0647 \u0635\u0648\u0631\u062a \u0642\u0631\u0627\u0631\u062f\u0627\u062f\u06cc \u0648 \u062f\u06cc\u06af\u0631\u06cc \u0628\u0627 \u067e\u06cc\u0627\u062f\u0647 \u0633\u0627\u0632\u06cc <code>IMiddleware<\/code> \u0631\u0627\u0628\u0637 \u0648 \u067e\u06cc\u0627\u062f\u0647 \u0633\u0627\u0632\u06cc \u0622\u0646 <code>InvokeAsync<\/code> \u0631\u0648\u0634\u060c \u0645\u0627 \u0627\u0632 \u0631\u0648\u0634 \u0627\u0648\u0644 \u06a9\u0647 \u0628\u0647 \u0635\u0648\u0631\u062a \u0642\u0631\u0627\u0631\u062f\u0627\u062f\u06cc \u0627\u0633\u062a \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u062e\u0648\u0627\u0647\u06cc\u0645 \u06a9\u0631\u062f.<\/p>\n<p>\u0645\u0646 \u062f\u0648\u0633\u062a \u062f\u0627\u0631\u0645 \u0645\u06cc\u0627\u0646 \u0627\u0641\u0632\u0627\u0631\u0647\u0627\u06cc \u062e\u0648\u062f \u0631\u0627 \u062f\u0631 \u067e\u0648\u0634\u0647 \u0627\u06cc \u0628\u0647 \u0646\u0627\u0645 Middlewares \u0646\u06af\u0647 \u062f\u0627\u0631\u0645\u060c \u0627\u0645\u0627 \u0627\u06cc\u0646 \u0628\u0647 \u0634\u0645\u0627 \u0628\u0633\u062a\u06af\u06cc \u062f\u0627\u0631\u062f \u06a9\u0647 \u06a9\u062c\u0627 \u06a9\u0644\u0627\u0633 \u0631\u0627 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f.<\/p>\n<p>\u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u06a9\u062f \u0645\u0648\u0631\u062f \u0646\u06cc\u0627\u0632 \u0628\u0631\u0627\u06cc Middleware \u0645\u0627 \u0622\u0645\u062f\u0647 \u0627\u0633\u062a:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight csharp\"><code>\n<span class=\"k\">public<\/span> <span class=\"k\">class<\/span> <span class=\"nc\">ErrorHandlingMiddleware<\/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\">ErrorHandlingMiddleware<\/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=\"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\">catch<\/span> <span class=\"p\">(<\/span><span class=\"n\">Exception<\/span> <span class=\"n\">ex<\/span><span class=\"p\">)<\/span>\n        <span class=\"p\">{<\/span>\n            <span class=\"k\">await<\/span> <span class=\"nf\">HandleExceptionAsync<\/span><span class=\"p\">(<\/span><span class=\"n\">context<\/span><span class=\"p\">,<\/span> <span class=\"n\">ex<\/span><span class=\"p\">);<\/span>\n        <span class=\"p\">}<\/span>\n    <span class=\"p\">}<\/span>\n\n    <span class=\"k\">private<\/span> <span class=\"k\">async<\/span> <span class=\"n\">Task<\/span> <span class=\"nf\">HandleExceptionAsync<\/span><span class=\"p\">(<\/span><span class=\"n\">HttpContext<\/span> <span class=\"n\">context<\/span><span class=\"p\">,<\/span> <span class=\"n\">Exception<\/span> <span class=\"n\">exception<\/span><span class=\"p\">)<\/span>\n    <span class=\"p\">{<\/span>\n\n    <span class=\"p\">}<\/span>\n<span class=\"p\">}<\/span>\n\n\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\u0646 \u0628\u0627 \u062a\u0648\u0636\u06cc\u062d \u062c\u0631\u06cc\u0627\u0646 \u0634\u0631\u0648\u0639 \u0645\u06cc \u06a9\u0646\u0645 \u0648 \u0633\u067e\u0633 \u0627\u062c\u0631\u0627\u06cc \u0622\u0646 \u0631\u0627 \u0634\u0631\u0648\u0639 \u0645\u06cc \u06a9\u0646\u0645 <code>HandleExceptionAsync<\/code> \u0631\u0648\u0634<\/p>\n<p>\u0627\u0632 \u0622\u0646\u062c\u0627\u06cc\u06cc \u06a9\u0647 \u0647\u0631 \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u06cc \u0627\u0632 \u0637\u0631\u06cc\u0642 \u0627\u06cc\u0646 \u0645\u06cc\u0627\u0646\u200c\u0627\u0641\u0632\u0627\u0631 \u0627\u0631\u0633\u0627\u0644 \u0645\u06cc\u200c\u0634\u0648\u062f\u060c \u062f\u0631 \u0647\u0631 \u0646\u0642\u0637\u0647 \u0627\u0632 \u0628\u0631\u0646\u0627\u0645\u0647\u060c \u0632\u0645\u0627\u0646\u06cc \u06a9\u0647 \u06cc\u06a9 \u0627\u0633\u062a\u062b\u0646\u0627 \u067e\u0631\u062a\u0627\u0628 \u0645\u06cc\u200c\u0634\u0648\u062f\u060c \u0627\u06cc\u0646\u062c\u0627 \u062c\u0627\u06cc\u06cc \u0627\u0633\u062a \u06a9\u0647 \u06af\u0631\u0641\u062a\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f \u0648 \u0631\u0633\u06cc\u062f\u06af\u06cc \u0645\u06cc\u200c\u0634\u0648\u062f. \u0627\u06cc\u0646 \u0627\u0645\u0631 \u0645\u0646\u0637\u0642 \u0631\u0633\u06cc\u062f\u06af\u06cc \u0628\u0647 \u0627\u0633\u062a\u062b\u0646\u0627\u0647\u0627 \u0631\u0627 \u0645\u062a\u0645\u0631\u06a9\u0632\u062a\u0631 \u0645\u06cc \u06a9\u0646\u062f \u0632\u06cc\u0631\u0627 \u0627\u06a9\u0646\u0648\u0646 \u0627\u0633\u062a\u062b\u0646\u0627\u0647\u0627\u06cc\u06cc \u06a9\u0647 \u0628\u0647 \u062a\u062c\u0631\u0628\u0647 \u06a9\u0627\u0631\u0628\u0631 \u0645\u0631\u0628\u0648\u0637 \u0645\u06cc \u0634\u0648\u0646\u062f \u062f\u0631 \u0627\u06cc\u0646 \u0645\u06a9\u0627\u0646 \u0648\u0627\u062d\u062f \u0631\u0633\u06cc\u062f\u06af\u06cc \u0645\u06cc \u0634\u0648\u0646\u062f. \u0645\u0627\u0646\u0646\u062f \u0627\u06cc\u0646 \u0645\u06cc\u0627\u0646\u200c\u0627\u0641\u0632\u0627\u0631 \u0627\u0633\u062a\u062b\u0646\u0627\u0647\u0627\u06cc\u06cc \u0631\u0627 \u06a9\u0647 \u0628\u0647 \u06a9\u0627\u0631\u0628\u0631 \u0639\u0644\u0627\u0642\u0647 \u0645\u0646\u062f \u0647\u0633\u062a\u0646\u062f \u0631\u0627 \u0645\u06cc\u200c\u06af\u06cc\u0631\u062f\u060c \u06cc\u06a9 \u067e\u0627\u0633\u062e \u062e\u0637\u0627\u06cc \u0645\u0639\u0646\u06cc\u200c\u062f\u0627\u0631 \u0627\u0632 \u0622\u0646\u200c\u0647\u0627 \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc\u200c\u06a9\u0646\u062f \u0648 \u0622\u0646 \u0631\u0627 \u062f\u0631 \u067e\u0627\u0633\u062e \u0627\u0631\u0633\u0627\u0644 \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"%D9%BE%DB%8C%D8%A7%D8%AF%D9%87_%D8%B3%D8%A7%D8%B2%DB%8C_%D9%85%D9%86%D8%B7%D9%82_%D8%B1%D8%B3%DB%8C%D8%AF%DA%AF%DB%8C_%D8%A8%D9%87_%D8%AE%D8%B7%D8%A7\"><\/span>\n<p>  \u067e\u06cc\u0627\u062f\u0647 \u0633\u0627\u0632\u06cc \u0645\u0646\u0637\u0642 \u0631\u0633\u06cc\u062f\u06af\u06cc \u0628\u0647 \u062e\u0637\u0627<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u0647\u0645\u0647 \u0627\u0633\u062a\u062b\u0646\u0627\u0647\u0627 \u0627\u0632 <code>Exception<\/code> \u06a9\u0644\u0627\u0633 \u067e\u0627\u06cc\u0647\u060c \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0627\u0633\u062a\u062b\u0646\u0627\u06cc\u06cc \u06a9\u0647 \u0645\u06cc\u200c\u06af\u06cc\u0631\u06cc\u0645\u060c \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u062f \u0628\u0647 \u0647\u0631 \u0627\u0633\u062a\u062b\u0646\u0627\u06cc \u0633\u0641\u0627\u0631\u0634\u06cc \u0627\u0631\u0633\u0627\u0644 \u0634\u0648\u062f\u060c \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u062f\u0631 <code>HandleExceptionAsync<\/code> \u0631\u0648\u0634\u060c \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u0645 \u0645\u0648\u0627\u0631\u062f \u0632\u06cc\u0631 \u0631\u0627 \u0627\u0646\u062c\u0627\u0645 \u062f\u0647\u06cc\u0645:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight csharp\"><code>\n<span class=\"k\">private<\/span> <span class=\"k\">async<\/span> <span class=\"n\">Task<\/span> <span class=\"nf\">HandleExceptionAsync<\/span><span class=\"p\">(<\/span><span class=\"n\">HttpContext<\/span> <span class=\"n\">context<\/span><span class=\"p\">,<\/span> <span class=\"n\">Exception<\/span> <span class=\"n\">exception<\/span><span class=\"p\">)<\/span>\n<span class=\"p\">{<\/span>\n    <span class=\"n\">HttpStatusCode<\/span> <span class=\"n\">code<\/span> <span class=\"p\">=<\/span> <span class=\"n\">HttpStatusCode<\/span><span class=\"p\">.<\/span><span class=\"n\">InternalServerError<\/span><span class=\"p\">;<\/span>\n    <span class=\"kt\">string<\/span> <span class=\"n\">errorMessage<\/span> <span class=\"p\">=<\/span> <span class=\"kt\">string<\/span><span class=\"p\">.<\/span><span class=\"n\">Empty<\/span><span class=\"p\">;<\/span>\n\n    <span class=\"c1\">\/\/ Handle the different exception types here<\/span>\n    <span class=\"k\">switch<\/span><span class=\"p\">(<\/span><span class=\"n\">Exception<\/span><span class=\"p\">)<\/span>\n    <span class=\"p\">{<\/span>\n        <span class=\"k\">case<\/span> <span class=\"n\">AuthenticationFailedException<\/span> <span class=\"n\">ex<\/span><span class=\"p\">:<\/span>\n            <span class=\"n\">code<\/span> <span class=\"p\">=<\/span> <span class=\"n\">HttpStatusCode<\/span><span class=\"p\">.<\/span><span class=\"n\">BadRequest<\/span><span class=\"p\">;<\/span>\n            <span class=\"n\">errorMessage<\/span> <span class=\"p\">=<\/span> <span class=\"n\">ex<\/span><span class=\"p\">.<\/span><span class=\"n\">Message<\/span><span class=\"p\">;<\/span>\n            <span class=\"k\">break<\/span><span class=\"p\">;<\/span>\n        <span class=\"k\">case<\/span> <span class=\"n\">NotAuthorizedException<\/span> <span class=\"n\">ex<\/span><span class=\"p\">:<\/span>\n            <span class=\"n\">code<\/span> <span class=\"p\">=<\/span> <span class=\"n\">HttpStatusCode<\/span><span class=\"p\">.<\/span><span class=\"n\">Unauthorized<\/span><span class=\"p\">;<\/span>\n            <span class=\"n\">errorMessage<\/span> <span class=\"p\">=<\/span> <span class=\"n\">ex<\/span><span class=\"p\">.<\/span><span class=\"n\">Message<\/span><span class=\"p\">;<\/span>\n            <span class=\"k\">break<\/span><span class=\"p\">;<\/span>\n        <span class=\"k\">case<\/span> <span class=\"n\">OperationFailedException<\/span> <span class=\"n\">ex<\/span><span class=\"p\">:<\/span>\n            <span class=\"n\">code<\/span> <span class=\"p\">=<\/span> <span class=\"n\">HttpStatusCode<\/span><span class=\"p\">.<\/span><span class=\"n\">BadRequest<\/span><span class=\"p\">;<\/span>\n            <span class=\"n\">errorMessage<\/span> <span class=\"p\">=<\/span> <span class=\"n\">ex<\/span><span class=\"p\">.<\/span><span class=\"n\">Message<\/span><span class=\"p\">;<\/span>\n            <span class=\"k\">break<\/span><span class=\"p\">;<\/span>\n        <span class=\"k\">case<\/span> <span class=\"n\">Exception<\/span> <span class=\"n\">ex<\/span><span class=\"p\">:<\/span>\n            <span class=\"n\">code<\/span> <span class=\"p\">=<\/span> <span class=\"n\">HttpStatusCode<\/span><span class=\"p\">.<\/span><span class=\"n\">InternalServerError<\/span><span class=\"p\">;<\/span>\n            <span class=\"n\">errorMessage<\/span> <span class=\"p\">=<\/span> <span class=\"s\">\"Something went wrong. Please try again\"<\/span><span class=\"p\">;<\/span>\n            <span class=\"k\">break<\/span><span class=\"p\">;<\/span>\n    <span class=\"p\">}<\/span>\n\n    <span class=\"n\">context<\/span><span class=\"p\">.<\/span><span class=\"n\">Response<\/span><span class=\"p\">.<\/span><span class=\"n\">ContentType<\/span> <span class=\"p\">=<\/span> <span class=\"s\">\"application\/json\"<\/span><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=\"p\">(<\/span><span class=\"kt\">int<\/span><span class=\"p\">)<\/span><span class=\"n\">code<\/span><span class=\"p\">;<\/span>\n    <span class=\"kt\">var<\/span> <span class=\"n\">errorResponse<\/span> <span class=\"p\">=<\/span> <span class=\"k\">new<\/span> <span class=\"nf\">ApiErrorResponse<\/span><span class=\"p\">(<\/span><span class=\"n\">code<\/span><span class=\"p\">,<\/span> <span class=\"n\">errorMessage<\/span><span class=\"p\">);<\/span>\n    <span class=\"kt\">var<\/span> <span class=\"n\">serializedErrorResponse<\/span> <span class=\"p\">=<\/span> <span class=\"n\">JsonSerializer<\/span><span class=\"p\">.<\/span><span class=\"nf\">Serialize<\/span><span class=\"p\">(<\/span><span class=\"n\">errorResponse<\/span><span class=\"p\">);<\/span>\n\n    <span class=\"k\">await<\/span> <span class=\"n\">context<\/span><span class=\"p\">.<\/span><span class=\"n\">Response<\/span><span class=\"p\">.<\/span><span class=\"nf\">WriteAsync<\/span><span class=\"p\">(<\/span><span class=\"n\">serializedErrorResponse<\/span><span class=\"p\">);<\/span>\n<span class=\"p\">}<\/span>\n\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>\u0646\u0648\u0639 \u0628\u0627 \u0646\u0627\u0645 ApiErrorResponse \u06cc\u06a9 \u06a9\u0644\u0627\u0633 \u0633\u0627\u062f\u0647 \u0628\u0627 \u062f\u0648 \u0648\u06cc\u0698\u06af\u06cc \u0627\u0633\u062a \u06a9\u0647 \u067e\u06cc\u0627\u0645 \u062e\u0637\u0627 \u0648 \u06a9\u062f \u0648\u0636\u0639\u06cc\u062a HTTP \u0631\u0627 \u0645\u062d\u0635\u0648\u0631 \u0645\u06cc \u06a9\u0646\u062f \u0648 \u062f\u0627\u0631\u0627\u06cc \u0627\u0639\u0644\u0627\u0646 \u0632\u06cc\u0631 \u0627\u0633\u062a:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight csharp\"><code>\n<span class=\"k\">public<\/span> <span class=\"k\">class<\/span> <span class=\"nc\">ApiErrorResponse<\/span>\n<span class=\"p\">{<\/span>\n    <span class=\"k\">public<\/span> <span class=\"kt\">string<\/span><span class=\"p\">?<\/span> <span class=\"n\">ErrorMessage<\/span> <span class=\"p\">{<\/span> <span class=\"k\">get<\/span><span class=\"p\">;<\/span> <span class=\"k\">set<\/span><span class=\"p\">;<\/span> <span class=\"p\">}<\/span>\n\n    <span class=\"k\">public<\/span> <span class=\"kt\">int<\/span> <span class=\"n\">StatusCode<\/span> <span class=\"p\">{<\/span> <span class=\"k\">get<\/span><span class=\"p\">;<\/span> <span class=\"k\">set<\/span><span class=\"p\">;<\/span> <span class=\"p\">}<\/span>\n\n    <span class=\"k\">public<\/span> <span class=\"nf\">ApiErrorResponse<\/span><span class=\"p\">(<\/span><span class=\"kt\">string<\/span> <span class=\"n\">errorMessage<\/span><span class=\"p\">)<\/span>\n    <span class=\"p\">{<\/span>\n        <span class=\"n\">ErrorMessage<\/span> <span class=\"p\">=<\/span> <span class=\"n\">errorMessage<\/span><span class=\"p\">;<\/span>\n    <span class=\"p\">}<\/span>\n\n    <span class=\"k\">public<\/span> <span class=\"nf\">ApiErrorResponse<\/span><span class=\"p\">(<\/span><span class=\"kt\">string<\/span> <span class=\"n\">errorMessage<\/span><span class=\"p\">,<\/span> <span class=\"kt\">int<\/span> <span class=\"n\">statusCode<\/span><span class=\"p\">)<\/span>\n    <span class=\"p\">{<\/span>\n        <span class=\"n\">ErrorMessage<\/span> <span class=\"p\">=<\/span> <span class=\"n\">errorMessage<\/span><span class=\"p\">;<\/span>\n        <span class=\"n\">StatusCode<\/span> <span class=\"p\">=<\/span> <span class=\"n\">statusCode<\/span><span class=\"p\">;<\/span>\n    <span class=\"p\">}<\/span>\n<span class=\"p\">}<\/span>\n\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>\u06a9\u062f \u062f\u0631 \u0627\u06cc\u0646 \u0631\u0648\u0634 \u062a\u0646\u0647\u0627 \u06cc\u06a9 \u06a9\u0627\u0631 \u0631\u0627 \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc \u062f\u0647\u062f\u060c \u0628\u0647 \u0646\u0648\u0639 \u0627\u0633\u062a\u062b\u0646\u0627 \u0646\u06af\u0627\u0647 \u0645\u06cc \u06a9\u0646\u062f \u0648 \u06a9\u062f \u0648\u0636\u0639\u06cc\u062a \u067e\u0627\u0633\u062e \u0648 \u0645\u062d\u062a\u0648\u0627\u06cc \u0622\u0646 \u0631\u0627 \u0628\u0631 \u0631\u0648\u06cc \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0627\u0633\u062a\u062e\u0631\u0627\u062c \u0634\u062f\u0647 \u0627\u0632 \u0627\u0633\u062a\u062b\u0646\u0627 \u062a\u0646\u0638\u06cc\u0645 \u0645\u06cc \u06a9\u0646\u062f. <\/p>\n<p>\u0648\u0642\u062a\u06cc \u0646\u0648\u0639 \u062c\u062f\u06cc\u062f\u06cc \u0627\u0632 \u0627\u0633\u062a\u062b\u0646\u0627 \u0631\u0627 \u0645\u0639\u0631\u0641\u06cc \u0645\u06cc \u06a9\u0646\u06cc\u062f\u060c \u0641\u0642\u0637 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f a \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f <code>case<\/code> \u0628\u0631\u0627\u06cc \u0622\u0646 \u062f\u0631 <code>switch<\/code> \u0628\u0644\u0627\u06a9 \u06a9\u0646\u06cc\u062f\u060c \u0648 \u0645\u06cc\u0627\u0646\u200c\u0627\u0641\u0632\u0627\u0631 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u062f \u0627\u06cc\u0646 \u0646\u0648\u0639 \u0627\u0633\u062a\u062b\u0646\u0627 \u0631\u0627 \u0646\u06cc\u0632 \u0645\u062f\u06cc\u0631\u06cc\u062a \u06a9\u0646\u062f\u060c \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u062a\u0646\u0647\u0627 \u06a9\u0627\u0631\u06cc \u06a9\u0647 \u0628\u0627\u06cc\u062f \u0627\u0646\u062c\u0627\u0645 \u062f\u0647\u06cc\u062f \u0627\u06cc\u0646 \u0627\u0633\u062a \u06a9\u0647 \u0627\u0633\u062a\u062b\u0646\u0627\u06cc \u062c\u062f\u06cc\u062f \u062e\u0648\u062f \u0631\u0627 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f\u060c \u0634\u0631\u0648\u0639 \u06a9\u0646\u06cc\u062f \u0628\u0647 \u067e\u0631\u062a\u0627\u0628 \u0622\u0646 \u062f\u0631 \u0647\u0631 \u06a9\u062c\u0627 \u06a9\u0647 \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u06cc\u062f\u060c \u0648 \u0641\u0642\u0637 \u06cc\u06a9 \u0645\u0648\u0631\u062f \u0628\u0631\u0627\u06cc \u0622\u0646 \u062f\u0631 \u0645\u06cc\u0627\u0646\u200c\u0627\u0641\u0632\u0627\u0631 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f\u060c \u0648 \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u0631\u0627 \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc\u200c\u062f\u0647\u062f. \u0628\u062a\u0648\u0627\u0646\u06cc\u062f \u0627\u0632 \u062a\u0628\u062f\u06cc\u0644 \u0622\u0646 \u0628\u0647 \u0686\u06cc\u0632\u06cc \u06a9\u0647 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0628\u0631\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u06cc\u0627 \u0645\u0635\u0631\u0641 \u06a9\u0646\u0646\u062f\u06af\u0627\u0646 API \u062e\u0648\u062f \u0627\u0631\u0633\u0627\u0644 \u06a9\u0646\u06cc\u062f \u0645\u0631\u0627\u0642\u0628\u062a \u06a9\u0646\u06cc\u062f.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"%D9%85%D8%B2%DB%8C%D8%AA_%D8%A7%D8%B6%D8%A7%D9%81%DB%8C\"><\/span>\n<p>  \u0645\u0632\u06cc\u062a \u0627\u0636\u0627\u0641\u06cc<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u06cc\u06a9\u06cc \u062f\u06cc\u06af\u0631 \u0627\u0632 \u0645\u0632\u0627\u06cc\u0627\u06cc \u0627\u06cc\u0646 \u0631\u0648\u06cc\u06a9\u0631\u062f\u060c \u0627\u06cc\u0646 \u0627\u0633\u062a \u06a9\u0647 \u0628\u0647 \u062f\u0644\u06cc\u0644 \u0627\u06cc\u0646\u06a9\u0647 \u0645\u06a9\u0627\u0646 \u0645\u0631\u06a9\u0632\u06cc \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 \u0631\u0633\u06cc\u062f\u06af\u06cc \u0628\u0647 \u0627\u0633\u062a\u062b\u0646\u0627\u0647\u0627 \u0627\u0633\u062a\u060c \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0627\u062f\u0627\u0645\u0647 \u062f\u0647\u06cc\u062f \u0648 \u06cc\u06a9 \u0646\u0645\u0648\u0646\u0647 \u0644\u0627\u06af\u0631 \u062a\u0632\u0631\u06cc\u0642 \u06a9\u0646\u06cc\u062f\u060c \u0648 \u0647\u0645\u0686\u0646\u06cc\u0646 \u062b\u0628\u062a \u0627\u0633\u062a\u062b\u0646\u0627\u0647\u0627 \u0631\u0627 \u062f\u0631 \u0647\u0645\u0627\u0646 \u0645\u06cc\u0627\u0646 \u0627\u0641\u0632\u0627\u0631 \u0645\u062a\u0645\u0631\u06a9\u0632 \u06a9\u0646\u06cc\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight csharp\"><code>\n<span class=\"k\">public<\/span> <span class=\"k\">class<\/span> <span class=\"nc\">ErrorHandlingMiddleware<\/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    <span class=\"k\">private<\/span> <span class=\"k\">readonly<\/span> <span class=\"n\">ILogger<\/span><span class=\"p\">&lt;<\/span><span class=\"n\">ErrorHandlingMiddleware<\/span><span class=\"p\">&gt;<\/span> <span class=\"n\">_logger<\/span><span class=\"p\">;<\/span>\n\n    <span class=\"k\">public<\/span> <span class=\"nf\">ErrorHandlingMiddleware<\/span><span class=\"p\">(<\/span><span class=\"n\">RequestDelegate<\/span> <span class=\"n\">next<\/span><span class=\"p\">,<\/span> <span class=\"n\">ILogger<\/span><span class=\"p\">&lt;<\/span><span class=\"n\">ErrorHandlingMiddleware<\/span><span class=\"p\">&gt;<\/span> <span class=\"n\">logger<\/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=\"n\">_logger<\/span> <span class=\"p\">=<\/span> <span class=\"n\">logger<\/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=\"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\">catch<\/span> <span class=\"p\">(<\/span><span class=\"n\">Exception<\/span> <span class=\"n\">ex<\/span><span class=\"p\">)<\/span>\n        <span class=\"p\">{<\/span>\n            <span class=\"k\">await<\/span> <span class=\"nf\">HandleExceptionAsync<\/span><span class=\"p\">();<\/span>\n            <span class=\"n\">_logger<\/span><span class=\"p\">.<\/span><span class=\"nf\">LogError<\/span><span class=\"p\">(<\/span><span class=\"n\">ex<\/span><span class=\"p\">);<\/span>\n        <span class=\"p\">}<\/span>\n    <span class=\"p\">}<\/span> \n    <span class=\"p\">...<\/span>\n<span class=\"p\">}<\/span>\n\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>\u062f\u0631 \u0646\u0647\u0627\u06cc\u062a\u060c \u0627\u06a9\u0646\u0648\u0646 \u06a9\u0647 \u0645\u06cc\u0627\u0646 \u0627\u0641\u0632\u0627\u0631 \u0645\u0627 \u062f\u0631 \u062c\u0627\u06cc \u062e\u0648\u062f \u0642\u0631\u0627\u0631 \u062f\u0627\u0631\u062f\u060c \u0628\u0627\u06cc\u062f \u062c\u0644\u0648 \u0628\u0631\u0648\u06cc\u0645 \u0648 \u0622\u0646 \u0631\u0627 \u0628\u0647 \u062e\u0637 \u0644\u0648\u0644\u0647 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u0645. \u062f\u0631 Program.cs\u060c \u0627\u06cc\u0646 \u062e\u0637 \u0631\u0627 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight csharp\"><code>\n<span class=\"n\">app<\/span><span class=\"p\">.<\/span><span class=\"n\">UseMiddleware<\/span><span class=\"p\">&lt;<\/span><span class=\"n\">ErrorHandlingMiddleware<\/span><span class=\"p\">&gt;();<\/span>\n\n<span class=\"k\">if<\/span> <span class=\"p\">(<\/span><span class=\"n\">app<\/span><span class=\"p\">.<\/span><span class=\"n\">Environment<\/span><span class=\"p\">.<\/span><span class=\"nf\">IsDevelopment<\/span><span class=\"p\">())<\/span>\n<span class=\"p\">{<\/span>\n    <span class=\"n\">app<\/span><span class=\"p\">.<\/span><span class=\"nf\">UseSwagger<\/span><span class=\"p\">();<\/span>\n    <span class=\"n\">app<\/span><span class=\"p\">.<\/span><span class=\"nf\">UseSwaggerUI<\/span><span class=\"p\">();<\/span>\n<span class=\"p\">}<\/span>\n\n<span class=\"n\">app<\/span><span class=\"p\">.<\/span><span class=\"nf\">UseHttpsRedirection<\/span><span class=\"p\">();<\/span>\n\n<span class=\"n\">app<\/span><span class=\"p\">.<\/span><span class=\"nf\">UseAuthentication<\/span><span class=\"p\">();<\/span>\n<span class=\"n\">app<\/span><span class=\"p\">.<\/span><span class=\"nf\">UseAuthorization<\/span><span class=\"p\">();<\/span>\n\n<span class=\"n\">app<\/span><span class=\"p\">.<\/span><span class=\"nf\">MapControllers<\/span><span class=\"p\">();<\/span>\n\n<span class=\"n\">app<\/span><span class=\"p\">.<\/span><span class=\"nf\">Run<\/span><span class=\"p\">();<\/span>\n\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<blockquote>\n<p>\ud83d\udca1 <strong>\u062a\u0648\u062c\u0647:<\/strong> \u062b\u0628\u062a \u06a9\u0631\u062f\u0646 \u062e\u0637\u0627\u06cc \u0645\u062f\u06cc\u0631\u06cc\u062a \u0645\u06cc\u0627\u0646\u200c\u0627\u0641\u0632\u0627\u0631 \u0627\u0628\u062a\u062f\u0627 \u062f\u0631 \u062e\u0637 \u0644\u0648\u0644\u0647 \u0628\u0633\u06cc\u0627\u0631 \u0645\u0647\u0645 \u0627\u0633\u062a\u060c \u0632\u06cc\u0631\u0627 \u0627\u06cc\u0646 \u0627\u0645\u0631 \u0628\u0647 \u0622\u0646 \u0627\u062c\u0627\u0632\u0647 \u0645\u06cc\u200c\u062f\u0647\u062f \u062a\u0627 \u0627\u0633\u062a\u062b\u0646\u0627\u0647\u0627\u06cc\u06cc \u0631\u0627 \u06a9\u0647 \u062f\u0631 \u0645\u0624\u0644\u0641\u0647\u200c\u0647\u0627\u06cc \u0645\u06cc\u0627\u0646\u200c\u0627\u0641\u0632\u0627\u0631 \u0628\u0639\u062f\u06cc \u062f\u0631 \u0632\u0646\u062c\u06cc\u0631\u0647 \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc\u200c\u0634\u0648\u0646\u062f \u0645\u062f\u06cc\u0631\u06cc\u062a \u06a9\u0646\u062f\u060c \u0648 \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u062f \u062f\u0631 \u0646\u0647\u0627\u06cc\u062a \u0628\u0627 \u0647\u0631 \u0627\u0633\u062a\u062b\u0646\u0627\u06cc\u06cc \u06a9\u0647 \u0628\u0631\u0646\u0627\u0645\u0647 \u0645\u0627 \u0642\u0631\u0627\u0631 \u0627\u0633\u062a \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u062f\u060c \u0645\u0642\u0627\u0628\u0644\u0647 \u06a9\u0646\u062f. \u0627\u06cc\u0646 \u0627\u0633\u062a\u062b\u0646\u0627 \u062f\u0631 \u0637\u0648\u0644 \u067e\u0631\u062f\u0627\u0632\u0634 \u06cc\u06a9 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u062f\u0631\u06cc\u0627\u0641\u062a\u06cc \u0631\u062e \u062f\u0627\u062f\u0647 \u0627\u0633\u062a.<\/p>\n<\/blockquote>\n<h2><span class=\"ez-toc-section\" id=\"%D9%86%D8%AA%DB%8C%D8%AC%D9%87_%DA%AF%DB%8C%D8%B1%DB%8C\"><\/span>\n<p>  \u0646\u062a\u06cc\u062c\u0647 \u06af\u06cc\u0631\u06cc<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u0627\u0648\u0647! \u062a\u0627 \u0622\u062e\u0631\u0634 \u0631\u0633\u06cc\u062f\u06cc\u0645! \u0645\u0627 \u0645\u06a9\u0627\u0646\u06cc\u0633\u0645 \u0645\u062f\u06cc\u0631\u06cc\u062a \u062e\u0637\u0627\u06cc \u062c\u0647\u0627\u0646\u06cc \u0631\u0627 \u0628\u0631\u0631\u0633\u06cc\u060c \u0628\u062d\u062b \u0648 \u0627\u062c\u0631\u0627 \u06a9\u0631\u062f\u06cc\u0645! \u06a9\u0645\u0627\u0646 \u0628\u06af\u06cc\u0631!<br \/>\u067e\u0633\u062a \u0628\u0633\u06cc\u0627\u0631 \u0637\u0648\u0644\u0627\u0646\u06cc \u0628\u0648\u062f\u060c \u0627\u0645\u0627 \u0645\u0627 \u0628\u0647 \u0686\u06cc\u0632\u0647\u0627\u06cc \u0632\u06cc\u0627\u062f\u06cc \u0646\u06af\u0627\u0647 \u06a9\u0631\u062f\u0647 \u0627\u06cc\u0645\u060c \u0627\u0632 \u062f\u0631\u06a9 \u0647\u062f\u0641 \u0645\u062f\u06cc\u0631\u06cc\u062a \u0627\u0633\u062a\u062b\u0646\u0627 \u062f\u0631 \u0633\u0637\u062d \u062c\u0647\u0627\u0646\u06cc\u060c \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc\u0627\u0646 \u0627\u0641\u0632\u0627\u0631\u060c \u0648 \u062f\u06cc\u062f\u0646 \u0646\u062d\u0648\u0647 \u0631\u0633\u06cc\u062f\u06af\u06cc \u0628\u0647 \u0627\u0633\u062a\u062b\u0646\u0627\u0647\u0627. \u0627\u06a9\u0646\u0648\u0646 \u0628\u0631\u0627\u06cc \u0647\u0631 \u0633\u0646\u0627\u0631\u06cc\u0648\u06cc\u06cc \u06a9\u0647 \u0645\u06cc\u200c\u062e\u0648\u0627\u0647\u06cc\u062f \u0628\u0627 \u0627\u0633\u062a\u062b\u0646\u0627\u0647\u0627 \u062f\u0631 \u0633\u0637\u062d \u062c\u0647\u0627\u0646\u06cc \u0648 \u0645\u062a\u0645\u0631\u06a9\u0632\u062a\u0631 \u0645\u0642\u0627\u0628\u0644\u0647 \u06a9\u0646\u06cc\u062f\u060c \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0627\u0632 \u0627\u06cc\u0646 \u0631\u0648\u06cc\u06a9\u0631\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f \u0648 \u0622\u0646 \u0631\u0627 \u0645\u062a\u0646\u0627\u0633\u0628 \u0628\u0627 \u0646\u06cc\u0627\u0632\u0647\u0627\u06cc \u062e\u0648\u062f \u062a\u0646\u0638\u06cc\u0645 \u06a9\u0646\u06cc\u062f! <\/p>\n<h2><span class=\"ez-toc-section\" id=\"%D8%A8%D8%A7_%D8%AA%D8%B4%DA%A9%D8%B1_%D8%A8%D8%B1%D8%A7%DB%8C_%D8%AE%D9%88%D8%A7%D9%86%D8%AF%D9%86\"><\/span>\n<p>  \u0628\u0627 \u062a\u0634\u06a9\u0631 \u0628\u0631\u0627\u06cc \u062e\u0648\u0627\u0646\u062f\u0646!<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<\/p><\/div>\n","protected":false},"excerpt":{"rendered":"<p>Summarize this content to 400 words in Persian Lang \u0633\u0644\u0627\u0645 \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u062f! \ud83d\udc4b\ud83c\udffb \u062f\u0631 \u0686\u0646\u062f \u0645\u0642\u0627\u0644\u0647 \u06af\u0630\u0634\u062a\u0647\u060c \u0645\u0646 \u062f\u0631 \u0645\u0648\u0631\u062f \u0645\u0641\u0627\u0647\u06cc\u0645 \u062e\u0627\u0644\u0635 C# \u0635\u062d\u0628\u062a \u06a9\u0631\u062f\u0647 \u0627\u0645\u060c \u0686\u06cc\u0632\u0647\u0627\u06cc\u06cc \u0645\u0627\u0646\u0646\u062f \u0646\u0645\u0627\u06cc\u0646\u062f\u06af\u0627\u0646\u060c \u062a\u0648\u06a9\u0646 \u0647\u0627\u06cc \u0644\u063a\u0648\u060c IQueryable \u0648 \u063a\u06cc\u0631\u0647 \u062f\u0631 \u0627\u06cc\u0646 \u0645\u0642\u0627\u0644\u0647\u060c \u0645\u0627 \u0628\u0631 \u0631\u0648\u06cc \u0686\u06cc\u0632\u06cc \u062e\u0627\u0635 \u062a\u0645\u0631\u06a9\u0632 \u0645\u06cc \u06a9\u0646\u06cc\u0645\u060c \u06a9\u0647 \u0627\u06cc\u0646 \u0627\u0633\u062a \u0631\u0633\u06cc\u062f\u06af\u06cc \u0628\u0647 \u0627\u0633\u062a\u062b\u0646\u0627\u060c \u0627\u0645\u0627 \u062f\u0631 \u0645\u0642\u06cc\u0627\u0633 &hellip;<\/p>\n","protected":false},"author":2,"featured_media":80898,"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-80897","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-dev"],"_links":{"self":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts\/80897","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=80897"}],"version-history":[{"count":0,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts\/80897\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/media\/80898"}],"wp:attachment":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/media?parent=80897"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/categories?post=80897"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/tags?post=80897"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}