尝试使用catch块在wcf中不起作用

时间:2013-07-24 15:54:33

标签: c# .net wcf try-catch

我有一个WCF服务,现在已经运行了很长时间。我最近做了一些更改,它在本地工作正常,但崩溃与此消息服务器端(仅对我更改的方法,所有其他方法工作正常)

  

无法调用该服务。可能的原因:服务处于脱机状态   或无法进入;客户端配置与   代理;现有代理无效。请参阅堆栈跟踪   更多详情。您可以尝试通过启动新代理进行恢复,然后进行恢复   默认配置或刷新服务。

问题是我无法调试问题,因为它只是在服务器上失败了。更令人沮丧的是,我确切地知道代码失败的地方我只是不知道为什么因为我永远无法提取异常数据。这是在WCF服务中被命中的方法。

    public bool GenerateSpec(string product)
    {
        specService.GenerateSpec(product);
        return true;
    }

然后调用它。

    public bool GenerateSpec(string productNumber)
    {
        try
        {
            SessionFactory factory = new SessionFactory();
            Session = factory.CreateSession(DataConnection.PM);
            productService = new ProductService(Session);

            // other code
            return true;
        }
        catch (Exception e)
        {
            emailService.SendMessage(e.Message + "\n\n" + e.StackTrace);
            return false;
        }
    }

我知道它在Session = factory.CreateSession(DataConnection.PM);行失败了,但不知道为什么,它似乎只是忽略了我的try catch块并且无论如何都要死了。会发生什么事?

3 个答案:

答案 0 :(得分:1)

你确定这句话:

emailService.SendMessage(e.Message + "\n\n" + e.StackTrace);

是不是在服务器上抛出异常?它可能会到达你的try catch块但在这一行上抛出另一个异常。

答案 1 :(得分:1)

您可以设置Web.Config,以便将服务器端异常详细信息返回给客户端,这样您就可以看到真正的异常。

在serviceBehavior中,尝试设置

<serviceDebug includeExceptionDetailInFaults="True" />

答案 2 :(得分:0)

这看起来无法找到方法。使用Fiddler查看调用返回的内容。