Ошибка входа в базу данных, не удается зафиксировать исключения вставкиC#

Место общения программистов C#
Ответить
Anonymous
 Ошибка входа в базу данных, не удается зафиксировать исключения вставки

Сообщение Anonymous »

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

Код: Выделить всё

public async Task CreateError(Exception e)
{
var Error = new ErrorLog
{
StackTrace = e.StackTrace,
ErrorMessage = e.Message,
ErrorSource = e.Source,
MethodName = e.TargetSite?.Name
};

string exceptionText = "Exception:" + e.ToString();

if (e.InnerException != null)
{
exceptionText = exceptionText + "Exception.InnerException:" + e.InnerException.ToString();

if (e.InnerException.InnerException != null)
{
exceptionText = exceptionText + "Exception.InnerException.InnerException:" +
e.InnerException.InnerException.ToString();
}
}

Error.InnerMessage = exceptionText;

_unitOfWork.ErrorLogRepository.Add(Error);

return await _unitOfWork.CommitAsync();
}
Я пытаюсь зарегистрировать следующую ошибку:

SqlException: инструкция INSERT конфликтует с FOREIGN KEY ограничение (...)

А вот как вызывается метод CreateError

Код: Выделить всё

 public async Task ErrorMethod(var a)
{
(...)
catch(Exception ex)
{
var ret = await _errorService.CreateError(ex);
responseDto.Errors.Add(new ErrorMessageDto { ErrorCode="TestError",Message = ex.Message});
}

return Ok(response);
}
Следуя коду во время отладки, я думаю, что проблема может быть связана с контекстом, который я открываю для закрытия журнала ошибок, прежде чем смогу зафиксировать изменения, но я не уверен, где это сделать. иди оттуда.

Подробнее здесь: https://stackoverflow.com/questions/791 ... exceptions
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»