【问题标题】:Catching Lost Responses In WCF在 WCF 中捕获丢失的响应
【发布时间】:2014-01-24 02:28:11
【问题描述】:

我的WCF 应用程序中有一个场景,我需要在异常时将请求记录到数据库中 我已将请求存储在字典中并使用IsFault 检查我的请求是否有问题/strong>,如果是错误,我已经将其记录到数据库中

public static string key;
Dictionary<string , string> actionToReplyAction;
String value  = "";
public NLog.Logger _logger = NLog.LogManager.GetCurrentClassLogger();

public void AfterReceiveReply(ref Message reply, object correlationState)        
{
    if (reply.IsFault)
    {
        string requestAction = (string)correlationState;
        _logger.Debug("Request  :::: " + key);
        _logger.Debug("Response :::: " + reply.ToString());
    }
}

public object BeforeSendrequest(ref Message request, IClientChannel channel)
{
    key = request.ToString();

    return null;
}

我如何在响应丢失时记录请求。我是WCF 的新手:如果你能给我示例代码,那会很有帮助。

【问题讨论】:

  • 迷路是什么意思?
  • 如果响应在到达 AfterRecieveReply 之前就丢失了,或者如果响应没有到达 Afterrecievereply,则类似于超时异常
  • 如果没有响应怎么办,然后它没有来 afterrecievereply 正确....比我如何记录请求,只要它不去 AfterRecieveReply 和响应丢失。
  • 你不能在那个时候 - 它已经丢失了。您必须在其他地方记录它 - 可能在服务以SendReply(或任何方法名称)发送它之前。问题是你必须记录所有你不想做的事情。
  • 所以我们无法在响应丢失时捕获请求

标签: asp.net wcf web-services exception logging


【解决方案1】:

如果我说得对,您正在寻找一种方法来捕获所有未捕获的异常。然后,您可以按照通常的方式记录它们。

This post 提供了许多关于 WCF 中异常处理的提示。其中,它描述了如何通过 WCF 管道捕获所有未处理的异常。

希望我能帮上忙!

【讨论】:

  • 是的,你是对的,我正在寻找记录未捕获异常的请求,我只能记录异常请求,但如果没有响应,我就无法
  • 很高兴为您提供帮助。实际上,没有例外请求。异常只能作为请求的结果发生。如果一切正常,则结果将是响应。否则,将处理并记录异常...无论如何,您应该投票赞成答案。对于导航到您的问题的其他用户来说,能够确定有用的答案非常重要......
  • 当然,当我找到适合我的答案时,我会投票赞成,感谢您的帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-04-20
  • 2011-04-26
  • 1970-01-01
  • 1970-01-01
  • 2011-09-25
  • 2011-03-24
  • 1970-01-01
相关资源
最近更新 更多