问题:如何捕获对 WCF 数据服务的调用的响应(或更具体地说,响应的状态代码)?
详细说明:我有一个带有记录器的相当简单的 WCF 数据服务。类似于以下内容:
public class MyDefault : DataService<MyEntities>
{
private Logger logger = LogManager.GetCurrentClassLogger();
public static void InitializeService(DataServiceConfiguration config)
{
config.SetEntitySetAccessRule("*", EntitySetRights.All);
config.DataServiceBehavior.MaxProtocolVersion = DataServiceProtocolVersion.V3;
}
protected override void OnStartProcessingRequest(ProcessRequestArgs args)
{
logger.Info(args.RequestUri);
}
protected override void HandleException(HandleExceptionArgs args)
{
logger.Error(args.ResponseStatusCode)
}
}
目标是获取所有请求及其结果的日志。上面的代码几乎可以做到这一点,因为 404 确实会被记录,就像自定义错误和事情真的出错时一样。
但错过的是当事情进展顺利时。如果没有这些信息,日志看起来真的很奇怪,并且无法区分真正奇怪的事情发生(即:没有响应和没有日志)或一切都按应有的方式工作(即:成功,但仍然没有日志)。
所以真正的问题是:如何使用与传入请求相同的记录器来记录响应的状态代码?
[编辑]
我可能过于简单化了。这是一个更大的系统的一部分,该系统已经进行了日志记录。关键是将所有日志记录在一个地方和一种格式。我之前曾简要介绍过消息记录。也许还不够,我现在正在研究更多。
然而,即使我能够根据自己的需要来塑造它,最初的问题已经激起了我的兴趣,我仍然想探索是否有可能至少看看这个HttpResponse
对象。