2013-07-24 100 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來查看呼叫返回的內容。