Мы пытаемся создать простой в использовании веб-сервис для регистрации исключений и сообщений.
В идеале объявление веб-методов должно выглядеть следующим образом
public int LogException(MethodBase methodBase, Exception exception)
public int LogMessage(MethodBase methodBase, string message, string data)
Но это не работает, так как при добавлении ссылки на веб-сервис он создает свои собственные классы, и System.Reflection.MethodBase отличается от типа LogService.MethodBase. И ни MethodBase, ни Exception не сериализуются. И я также хочу, чтобы исключение имело свои значения данных.
Как бы вы передали эти два объекта веб-методу?
Причина, по которой мы надеялись передать эти два объекта, заключается в том, что между ними мы можем получить 99% данных, необходимых для отслеживания ошибки. Они содержат информацию трассировки стека, имена методов и класс, в котором они находятся, и т. Д. И т. Д. И, добавив некоторую информацию в Exception.Data, вы можете получить значения параметров во время вызова. И это упрощает вызов для других разработчиков и, мы надеемся, делает их более вероятными, чтобы использовать общий регистратор, а не всегда катиться самостоятельно. Что в настоящее время оказывается проблематичным, поскольку каждый регистратор отличается, и большинство из них, похоже, не содержат ВСЕХ деталей, необходимых для отслеживания ошибки.
Таким образом мы можем стандартизировать возвращаемые значения и формат электронной почты, а также вносить изменения во все журналы приложений, изменяя одну службу.