2013-07-24 66 views
2

我有一个已经运行了很长时间的WCF服务。我最近做了一些改变,它工作正常,但本地与此消息的服务器端崩溃(仅针对我改变了方法,所有其他方法做工精细)尝试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块和反正快死了。可能会发生什么?

+1

这看起来无法找到方法。使用Fiddler查看电话返回的内容。 – JBrooks

+2

您可以设置Web.Config,以便将服务器端异常详细信息返回给客户端,以便您可以看到真正的异常。在您的serviceBehavior中,尝试设置 Jim

+0

听起来像SendMessage调用会引发异常。 – djs

回答

1

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

在你serviceBehavior,尝试设置

<serviceDebug includeExceptionDetailInFaults="True" />

1

你肯定行:

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

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

+0

是的,我认为这也是问题所在。但是,我继续说,并且仍然失败。 – Nick

0

这看起来好像找不到方法。使用Fiddler来查看呼叫返回的内容。