Почему промежуточное программное обеспечение для обработки ошибок не работает в asp

#c# #asp.net #error-handling #middleware

Вопрос:

У меня проблема с моим простым промежуточным программным обеспечением для обработки ошибок приложений… Когда я подделал строку подключения sql, я получаю ошибку, но мое промежуточное программное обеспечение не улавливает ее… кто-нибудь знает, почему?

 {
    public class ErrorHandlingMiddleware : IMiddleware // we need to add it to tell ASP that this class is middleware
    {

        public ErrorHandlingMiddleware()
        {

        }
        //next - access to next middleware
        public async Task InvokeAsync(HttpContext context, RequestDelegate next)
        {
            try
            {
                await next.Invoke(context); // here we call next middleware?
            }
            catch(Exception e)
            {
                context.Response.StatusCode = 500;
                await context.Response.WriteAsync("Something went wrong");
            }
        }
    }
}
 
 public void Configure(IApplicationBuilder app, IWebHostEnvironment env,StudentSeeder seeder)
        {

            seeder.Seed();

            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
                app.UseSwagger();
                app.UseSwaggerUI(c => c.SwaggerEndpoint("/swagger/v1/swagger.json", "MyLibrus v1"));
            }
            //start of request

            app.UseMiddleware<ErrorHandlingMiddleware>();

            app.UseAuthentication();

            app.UseHttpsRedirection();

            app.UseRouting();

            app.UseAuthorization();

            app.UseEndpoints(endpoints =>
            {
                endpoints.MapControllers();
            });
        }

 
 public void ConfigureServices(IServiceCollection services)
        {
            services.AddScoped<ErrorHandlingMiddleware>();
...
 

кто — нибудь может сказать мне, почему это не работает? У меня нет ошибки в моей развязности, но в сравнении..

Комментарии:

1. Ваше промежуточное программное обеспечение для обработки ошибок должно быть первым в конвейере, чтобы гарантировать, что все ошибки будут обнаружены, поэтому переместите его в начало функции настройки. Во-вторых, если вы работаете в режиме отладки, то, возможно, страница исключений разработчика улавливает это.

2. @ekke Ты знаешь, как это исправить?