【发布时间】:2011-05-06 20:58:50
【问题描述】:
我们正在尝试创建一个简单易用的网络服务来记录异常和消息。
理想情况下,Web 方法声明应如下所示
public int LogException(MethodBase methodBase, Exception exception)
public int LogMessage(MethodBase methodBase, string message, string data)
但这不起作用,因为当您添加对 Web 服务的引用时,它会创建自己的类,并且 System.Reflection.MethodBase 与 LogService.MethodBase 的类型不同。 MethodBase 或 Exception 都不能很好地序列化。而且我还希望异常具有它的数据值。
您将如何将这两个对象传递给网络方法?
我们希望只传递这两个对象的原因是,在它们之间,我们可以获得跟踪错误所需的 99% 的数据。它们包含堆栈跟踪信息、方法名和它们所在的类等……通过向 Exception.Data 添加一些信息,您可以在调用时获得参数值。而且,这简化了对其他开发人员的调用,并希望使他们更有可能使用通用记录器,而不是总是滚动自己的记录器。目前,事实证明这很麻烦,因为每个记录器都不同,而且大多数似乎没有包含追踪错误所需的所有详细信息。
通过这样做,我们可以标准化返回的值和电子邮件格式,并通过更改一项服务来更改所有应用程序的日志记录。
【问题讨论】:
标签: .net exception serialization logging asmx