У меня есть приложение, которое состоит из интерфейсного веб-портала, который вызывает приложение API для серверной части.API вызывает некоторый уровень бизнес-сервисов (библиотеку классов), который, в свою очередь, подключается к базе данных.
У меня возникла проблема с эскалацией ошибок из нижней базы данных вплоть до веб-портала: db =>библиотека классов => api => веб.Я хотел бы получать конкретные сообщения об ошибках на веб-портале, независимо от того, где это происходит.
В настоящее время, если ошибка происходит на самом портале, нет проблем, портал отображает эту ошибку.Однако, если это уровень библиотеки классов, я получаю общие ошибки API от уровня API.
Я пытался использовать глобальное промежуточное программное обеспечение для обработки ошибок на уровне API, например:
public async Task Invoke(HttpContext context)
{
context.Response.StatusCode = (int)HttpStatusCode.InternalServerError;
var ex = context.Features.Get<IExceptionHandlerFeature>()?.Error;
if (ex == null) return;
var error = new
{
message = ex.Message
};
context.Response.ContentType = "application/json";
using (var writer = new StreamWriter(context.Response.Body))
{
new JsonSerializer().Serialize(writer, error);
await writer.FlushAsync().ConfigureAwait(false);
}
}
Я зарегистрировал это так:
app.UseExceptionHandler(new ExceptionHandlerOptions
{
ExceptionHandler = new JsonExceptionMiddleware().Invoke
});
Однако, это не фиксирует конкретную ошибку библиотеки классов.
Любой совет о том, как мне следует это исправить, очень ценится.