Глобально запишите ошибку исключения программы и запишите файл в asp.net core 2.1 web api - PullRequest
0 голосов
/ 01 июля 2018

Я пытаюсь создать глобальную службу обработки исключений для ошибки выполнения, а не ошибки состояния 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

1 Ответ

0 голосов
/ 01 июля 2018

Вы пробовали серилог? Я использую serilog с MongoDb раковина .

...