.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>

