2014-04-30 42 views
0

我正在使用用戶名/密碼認證編寫一個相當簡單的WCF服務。我的用戶名/密碼驗證的代碼如下所示:WCF服務驗證。當憑證出錯時,從不返回錯誤

public class InvoiceServiceUserValidation : UserNamePasswordValidator 
{ 
    public override void Validate(string userName, string password) 
    { 
     if (string.IsNullOrEmpty(userName) || string.IsNullOrEmpty(password)) 
     { 
      throw new SecurityTokenException("Username and password required"); 
     } 

     if (InvoiceServiceHelper.AuthenticateUser(userName, password)) return; 

     throw new FaultException("Could not authenticate - Unknown reason"); 

    } 
} 

如果我提供正確的用戶名和密碼,一切都很好,而且行動仍在繼續。當我提供了錯誤的密碼,hovever時,這個異常永遠不會返回,所以我的客戶端在它超時之前就呆在那裏等待。

我已經調試過,所以我知道「throw new FaultException」這一行實際上是在它錯誤的時候達到的,但對客戶端仍然沒有答案。

幫助將不勝感激

回答

0

您需要打開登錄wcf。一旦東西通過你的代碼的邊緣,你不能直接調試,然而日誌記錄會讓你進一步解決問題。特別是當你開始使用攔截。

How to turn on WCF tracing?

當你有這個你可以看一下日誌,找出到底發生了什麼

。 如果你仍然無法弄清楚id建議問一個新的問題,否則這將被擱置。

你的前端是什麼。是銀色嗎?

你說這是超時 - 把時間增加到像10分鐘這樣愚蠢的事情。它會馬上超時嗎?

是連接被中止,是故障代碼500? 火起來提琴手

+0

在跟蹤中,我認爲拋出了異常,但客戶端仍然沒有收到它。有一個小小的機會,我不知道如何閱讀跟蹤文件,但 – sarcophilus

+0

是的,他們很難。你可以在邊界兩側得到痕跡。 –

+0

我如何獲得客戶端的痕跡? app.config中的相同配置行? – sarcophilus

0

我不知道爲什麼,但當我切換到wsHttpBinding(從wsDualHttpBinding)這開始工作。這不是一個解決方案,而是一個解決方法,但是這解決了我的問題。

如果其他人正在同樣掙扎,這可能是這種情況。