我们正在尝试创建一个简单易用的webservice来记录异常和消息。
理想情况下,web方法声明应如下所示
public int LogException(MethodBase methodBase, Exception exception)
public int LogMessage(MethodBase methodBase, string message, string data)但这并不起作用,因为当您添加对when服务的引用时,它会创建自己的类,而System.Reflection.MethodBase与LogService.MethodBase不是同一类型。而且MethodBase和Exception都不能很好地序列化。我也希望exception拥有它的数据值。
如何将这两个对象传递给webmethod?
我们希望只传递这两个对象的原因是,在它们之间,我们可以获得跟踪错误所需的99%的数据。它们包含堆栈跟踪信息、方法名和它们所在的类等。通过向Exception.Data添加一些信息,您可以获得调用时的参数值。而且,这简化了对其他开发人员的调用,并有望使他们更有可能使用通用的记录器,而不是总是滚动自己的记录器。目前,这被证明是麻烦的,因为每个记录器都是不同的,并且大多数似乎没有包括跟踪错误所需的所有细节。
通过这样做,我们可以标准化返回值和电子邮件格式,并通过更改一个服务来更改所有应用程序的日志。
发布于 2010-11-09 04:21:33
请不要这样做。
您不应该使用web服务来传递特定于平台的数据。MethodBase等是特定于.NET的,web服务基础设施并不打算容纳它。
为什么要让web服务进行日志记录?请改用类库。您不希望因为web服务的问题而导致日志记录失败。
最后,如果你必须这样做,不要使用ASMX web服务-使用WCF,它将允许你在客户端和服务上使用相同的类型。
也许更重要的是,WCF将允许您使用MSMQ作为传输,这样您就可以使用可靠的队列来确保最终记录日志消息。
我仍然怀疑您是否真的想发送MethodBase --改为发送MethodBase中的数据。您将如何处理.NET版本依赖关系?
https://stackoverflow.com/questions/4127671
复制相似问题