在客户端记录wcf数据服务(OData)请求URL

时间:2013-07-01 21:03:44

标签: c# .net wcf-data-services odata

普通的OData查询只是一个URL。

我有一个使用WCF数据服务(OData)的WPF应用程序,我希望能够启用发送到服务器以解析的每个URL的日志记录。 (跟踪性能问题和重复查询。)

有没有办法插入WCF数据服务的客户端调用,以便在将其发送到服务器之前获取此URL? (理想情况下,当它返回时(用于对各个查询进行性能分析)。

1 个答案:

答案 0 :(得分:3)

您可以在DataServiceContext上收听其中一个事件,并在每次触发事件时记录请求网址。例如:

var context = new DataServiceContext(new Uri("http://services.odata.org/v3/OData/OData.svc"));
context.BuildingRequest += (sender, eventArgs) => Console.Out.WriteLine(eventArgs.RequestUri);

或者,收听SendingRequest2也会起作用:

context.SendingRequest2 += (sender, eventArgs) => Console.Out.WriteLine(eventArgs.RequestMessage.Url);

为了记录URL,监听任何一个事件应该没问题。如果在某些时候,您还希望在发送请求之前修改外发URL,请使用BuildingRequest