Сценарий с HttpClient, вызывающий метод ASP.NET Web API, вызывающий репозиторий EF. У меня возникли проблемы с перехватом SQL-запросов.Как справиться с бэкэнд Исключения из методов IQueryable <>?
Клиент:
try
{
var client = new HttpClient();
var httpRequestMessage = new HttpRequestMessage();
var response = await client.SendAsync(httpRequestmessage);
response.EnsureSuccessStatusCode();
}
catch (Exception ex)
{
// internal error 500 here
}
Web API:
[HttpGet]
public IQueryable<Data> GetData()
{
try
{
return repository.Data();
}
catch (Exception ex)
{
// Nothing here
}
}
Repository:
public IQueryable<Data> GetData()
{
try
{
return dbContext.Data.Where(d=>d.Id == 1)
}
catch (Exception ex)
{
// nothing here
}
}
Как я могу обрабатывать исключения SQL Server (например, проблемы с соединением)? Ни слой API, ни слой репозитория не поймают их. Если бы я превратить запрашиваемых в массив в хранилище:
var arr = dbContext.Data.Where(d => d.Id == 1).ToArray();
Это было бы, конечно, поймают. Но как насчет рассматриваемого сценария, как я могу их поймать?
Я предполагаю, что вы получаете «WebException» на стороне клиента. Возможно, вы сможете получить ответ от «WebException» и проанализировать его, чтобы получить ошибку XML OData. –