Как уже упоминали другие люди, вам нужно перехватить исключение и преобразовать его в соответствующий HTTP-ответ в вашем собственном коде.
Причина этого в том, что в противном случае ваше исключение обрабатывается ASP . NET Ядро, использующее конфигурация обработки исключений у вас есть, и она может варьироваться:
Со страницей исключений для разработчика
Обычно в процессе разработки у вас будет код:
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
Когда ваша среда Разработка , она открывает специальную страницу для разработчиков, чтобы увидеть информацию о необработанных исключениях. Это только , в этом случае вы получаете трассировку стека исключений, а также сообщение об исключении в теле ответа.
Без страницы исключений разработчика
И наоборот, если исключение страница выключена (обычно отключена для Production environment), в теле ответа вы увидите nothing .
Как исправить
Данное исключение обработка в ASP. NET Ядро является сквозной задачей, я бы не стал использовать try...catch
везде, InvalidStringException
необходимо преобразовать в HttpResponse
.
Вместо этого я бы использовал IActionFilter
или UseExceptionHandler
, который является промежуточным ПО для обработки исключений :
Вот пример использования UseExceptionHandler
в * Метод 1040 * в Startup.cs :
app.UseExceptionHandler(opt => opt.Run(
async ctx =>
{
var feature = ctx.Features.Get<IExceptionHandlerFeature>();
if (feature.Error is InvalidStringException ex)
{
await ctx.Response.WriteAsync(ex.Message);
}
}));
Таким образом, ваш InvalidStringException
обрабатывается глобально в вашем приложении, без явного try...catch
. И вы можете выдать исключение в любом месте вашего кода, приведенный выше код перехватит исключение и правильно преобразует его в ответ HTTP с вашим собственным сообщением в качестве тела.
Также обратите внимание, потому что вы вызываете API из приложение Angular, так что скорее всего вам может понадобиться установить CORS на в вашем приложении API, если два приложения запускаются из разных источников.
Без CORS ваш HTTP-запрос от приложения Angular может завершиться ошибкой, прежде чем он достигнет вашего API. В этом случае статус ответа HTTP в вашем приложении Angular может быть undefined
. И в вашей консоли вы могли видеть ошибки CORS.