.Net Web服务记录
时间:2020-03-06 14:48:25 来源:igfitidea点击:
我登录Web服务的理想情况是记录所有方法调用(身份验证和数据访问)以及传递给它们的参数以及可能发生的错误,并将它们与关联的单个ID关联他们打同样的电话。另外,理想情况下,我希望能够控制是否记录所有参数,或者仅记录方法调用。我希望能够控制是否记录所有登录名或者仅记录失败的登录名。同样,在单个请求中检索到的所有信息都将通过ID(引导或者其他方式)链接在一起。
这是我理想的伐木情况。如果有人知道如何实现所有这些,并愿意搬到新罕布什尔州曼彻斯特地区...;)
但是说真的,有人知道我将如何将收到的Web服务请求与错误或者方法调用绑定在一起吗?我最初的尝试包括在Soap Extension中搞乱,尝试添加标头(soap或者html),以及不将扩展中的任意值传递给服务本身的内容。我所有的尝试都没有成功。
当前的日志记录情况是将身份验证日志记录到一个表,将方法/业务调用记录到另一个表,将异常记录到另一个表,并且它们之间没有互连。时间戳有时会很有帮助,但不够可靠,无法有效调试。我们目前使用的是.Net 2.0,到今年年底可能会使用3.5,因此,如果保留对2.0功能的答复,将会更有帮助。
任何人有任何想法吗?
解决方案
如果可能,请使用wcf并实施消息记录,请参见http://msdn.microsoft.com/zh-cn/library/ms730064.aspx
<system.diagnostics> <sources> <source name="System.ServiceModel.MessageLogging"> <listeners> <add name="messages" type="System.Diagnostics.XmlWriterTraceListener" initializeData="c:\logs\messages.svclog" /> </listeners> </source> </sources> </system.diagnostics> <system.serviceModel> <diagnostics> <messageLogging logEntireMessage="true" logMalformedMessages="false" logMessagesAtServiceLevel="true" logMessagesAtTransportLevel="false" maxMessagesToLog="3000" maxSizeOfMessageToLog="2000"/> </diagnostics> </system.serviceModel>