我想知道如何动态捕获 WebService 调用的参数(用于日志记录)。
是否有任何属性存储正在调用的参数?
假设您将 Windows Communication Foundation 用于 Web 服务,您可以创建一个客户端消息检查器来捕获入站通信并解析参数并将它们存储到数据库表中。您需要处理的接口是IEndpointBehavior和IClientMessageInspector。创建之后,您可以将其作为一种行为附加到 web.config 文件中的一个端点,并且应该这样做。
这取决于日志记录的类型和您使用的 Web 服务的类型。这还取决于您最终要如何处理这些信息。(报告?统计?调试?)
它还取决于您要在哪里捕获 Web 服务参数。您可以从调用应用程序中记录它们,也可以直接在 Web 服务中记录它们,具体取决于应用程序和网络的体系结构。您可以将参数信息存储在 Web 服务器上的日志中(这可能会影响 Web 服务器的性能),或者您可以在应用程序中本地记录参数并从那里处理该信息。
我存储进入 Web 服务的内容的一种方法是存储在数据库中。这是一个 .NET Web 服务,它通过存储过程从 db 获取数据,在存储过程中,我只是使用 INSERT INTO 语句来存储传入的内容。
通过 web.config 中的诊断元素启用跟踪怎么样?不过,这可能更多用于调试目的。
<microsoft.web.services>
<diagnostics>
<trace enabled="true" input="inputTrace.config" output="outputTrace.config"/>
</diagnostics>
</microsoft.web.services>