Я пытаюсь создать глобальную службу обработки исключений для ошибки выполнения, а не ошибки состояния http в веб-интерфейсе asp.net core 2.1 и записи в файл.
Попробовал несколько вариантов, таких как
services.AddMvc(config =>
{
config.Filters.Add(typeof(GlobalExceptionFilter));
})
.SetCompatibilityVersion(CompatibilityVersion.Version_2_1)
.AddSessionStateTempDataProvider();
Класс исключения
public class GlobalExceptionFilter : IExceptionFilter
{
public void OnException(ExceptionContext context)
{
HttpStatusCode status = HttpStatusCode.InternalServerError;
String message = String.Empty;
var exceptionType = context.Exception.GetType();
if (exceptionType == typeof(UnauthorizedAccessException))
{
message = "Unauthorized Access";
status = HttpStatusCode.Unauthorized;
}
else if (exceptionType == typeof(NotImplementedException))
{
message = "A server error occurred.";
status = HttpStatusCode.NotImplemented;
}
else if (exceptionType == typeof(MyAppException))
{
message = context.Exception.ToString();
status = HttpStatusCode.InternalServerError;
}
else
{
message = context.Exception.Message;
status = HttpStatusCode.NotFound;
}
context.ExceptionHandled = true;
HttpResponse response = context.HttpContext.Response;
response.StatusCode = (int)status;
response.ContentType = "application/json";
var err = message + " " + context.Exception.StackTrace;
response.WriteAsync(err);
}
}
Но это никогда не приводит к ошибкам. Я пытался с отладкой, но никогда не нажимал код отладки.
Может кто-нибудь, пожалуйста, дайте мне, как записать глобальную ошибку в файл.
нашел некоторые решения из этого решения
https://blog.elmah.io/error-logging-middleware-in-aspnetcore/
https://docs.microsoft.com/en-us/aspnet/core/fundamentals/error-handling?view=aspnetcore-2.1
http://www.talkingdotnet.com/global-exception-handling-in-aspnet-core-webapi/
Обработка исключений ASP.NET Core Web API