• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

try catch w middleware nie działa

0 głosów
523 wizyt
pytanie zadane 24 marca 2021 w C# przez Xames Nowicjusz (240 p.)

Witam mam problem z własnym middleware w asp.net. Uczyłem się z kanału Fullstack Developer, który wystąpił na kanale Pasja Informatyki. Kod jest 1:1 jak na filmiku, ale blok try catch nie wychwytuje błędu. Sprawdzałem przez narzędzie debugowania i wszystko ładnie przechodzi przez middleware ale błędu nie łapie.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.Logging;

namespace ASP3.Middleware
{
	public class ErrorHandlingMiddleware : IMiddleware
	{
		private readonly ILogger<ErrorHandlingMiddleware> _logger;

		public ErrorHandlingMiddleware(ILogger<ErrorHandlingMiddleware> logger)
		{
			_logger = logger;
		}
		public async Task InvokeAsync(HttpContext context, RequestDelegate next)
		{
			try
			{
				await next.Invoke(context);
			}
			catch (Exception e)
			{
				_logger.LogError(e, e.Message);

				context.Response.StatusCode = 500;
				await context.Response.WriteAsync("Something went wrong!");
			}
		}
	}
}
		public void ConfigureServices(IServiceCollection services)
		{
			services.AddControllers();
			services.AddDbContext<RestaurantDbContext>();
			services.AddScoped<RestaurantSeeder>();
			services.AddAutoMapper(this.GetType().Assembly);
			services.AddScoped<IRestaurantService, RestaurantService>();
			services.AddScoped<ErrorHandlingMiddleware>();
		}

		// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
		public void Configure(IApplicationBuilder app, IWebHostEnvironment env, RestaurantSeeder seeder)
		{
			seeder.Seed();
			if (env.IsDevelopment())
			{
				app.UseDeveloperExceptionPage();
			}
			app.UseMiddleware<ErrorHandlingMiddleware>();

			app.UseHttpsRedirection();

			app.UseRouting();

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

1 odpowiedź

0 głosów
odpowiedź 24 marca 2021 przez kebbek Użytkownik (500 p.)
wybrane 24 marca 2021 przez Xames
 
Najlepsza

odpowiadając na drugie pytanie pod video na youtube,

żeby ten wyjątek nie pokazywał się w Visual Studio, odznacz ten checkbox:

komentarz 24 marca 2021 przez Xames Nowicjusz (240 p.)
Już chyba wiem w czym jest problem. Po prostu wszystko super działa, ale sam visual studio pokazuje mi wyrzucenie błędu, ale po kliknięciu continue wszystko ładnie śmiga. Wiesz może jak wyłączyć tak irytującą funkcję w vs? Po za tym dzięki za chęć pomocy :)
komentarz 24 marca 2021 przez kebbek Użytkownik (500 p.)
ha, własnie edytowalem moją odpowiedź, mineliśmy się z komentarzami :P zerknij teraz
komentarz 24 marca 2021 przez Xames Nowicjusz (240 p.)
Właśnie widzę dzięki za pomoc.

Podobne pytania

+1 głos
1 odpowiedź 728 wizyt
pytanie zadane 5 maja 2021 w C i C++ przez Mavimix Dyskutant (8,490 p.)
0 głosów
1 odpowiedź 328 wizyt
pytanie zadane 5 maja 2020 w Java przez danielo665 Obywatel (1,040 p.)
0 głosów
1 odpowiedź 847 wizyt
pytanie zadane 17 listopada 2017 w C# przez Sensej Użytkownik (540 p.)

93,778 zapytań

142,737 odpowiedzi

323,388 komentarzy

63,382 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...