Как записать ошибку с уровня представления на уровень данных - PullRequest
0 голосов
/ 16 октября 2018

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

это моя архитектура enter image description here

Ответы [ 2 ]

0 голосов
/ 16 октября 2018

Это зависит от того, что вы подразумеваете под ошибками в уровне представления.Ошибки в коде на стороне сервера, например код WebForms позади?Или ошибки в браузере пользователя?Если последнее, вам, очевидно, нужен какой-то сетевой сервис (существует множество сторонних продуктов для сбора ошибок в браузерах с помощью небольшого количества JavaScript)

Что касается компонентов на стороне сервера, не думайте о регистрациикак механизм вашего уровня данных только потому, что он пишет в базу данных.Думайте об этом как о сквозной проблеме, которая в настоящий момент реализуется через базу данных.Я бы просто использовал стандартную библиотеку журналов, такую ​​как Log4Net или Serilog, для этого на всех уровнях, а не пытался бы обернуть ее в свои собственные абстракции в слое данных.

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

0 голосов
/ 16 октября 2018

Должен ли я создать службу для регистрации исключений в моей базе данных?

Нет.

Если в вашем веб-сервисе возникает ошибка, зарегистрируйте ее в своем веб-сервисе.Не распространяйте эту ошибку в пользовательском интерфейсе и ожидайте, что пользовательский интерфейс сообщит об этой ошибке обратно той же или другой веб-службе.

Это другая история, если вы хотите сообщить об ошибках, которые происходят в вашем пользовательском интерфейсе.Вы можете сообщить о таких ошибках через службу, но что, если ошибка связана с сетью, а служба журнала недоступна?Скорее регистрируйтесь как локально для приложения, как можете.

...