首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >序列化WebMethod中的MethodBase和异常类型

序列化WebMethod中的MethodBase和异常类型
EN

Stack Overflow用户
提问于 2010-11-09 04:18:11
回答 1查看 295关注 0票数 0

我们正在尝试创建一个简单易用的webservice来记录异常和消息。

理想情况下,web方法声明应如下所示

代码语言:javascript
复制
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添加一些信息,您可以获得调用时的参数值。而且,这简化了对其他开发人员的调用,并有望使他们更有可能使用通用的记录器,而不是总是滚动自己的记录器。目前,这被证明是麻烦的,因为每个记录器都是不同的,并且大多数似乎没有包括跟踪错误所需的所有细节。

通过这样做,我们可以标准化返回值和电子邮件格式,并通过更改一个服务来更改所有应用程序的日志。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-11-09 04:21:33

请不要这样做。

您不应该使用web服务来传递特定于平台的数据。MethodBase等是特定于.NET的,web服务基础设施并不打算容纳它。

为什么要让web服务进行日志记录?请改用类库。您不希望因为web服务的问题而导致日志记录失败。

最后,如果你必须这样做,不要使用ASMX web服务-使用WCF,它将允许你在客户端和服务上使用相同的类型。

也许更重要的是,WCF将允许您使用MSMQ作为传输,这样您就可以使用可靠的队列来确保最终记录日志消息。

我仍然怀疑您是否真的想发送MethodBase --改为发送MethodBase中的数据。您将如何处理.NET版本依赖关系?

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4127671

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档