在 ICredentials 中的密碼資料無法從 WCF 用戶端傳遞到 WCF 服務,.NET Framework 4.5 中

請注意--重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,且可能由 Microsoft Community 利用 Community Translation Framework技術或人工進行事後編修。翻譯過程並無專業譯者參與。Microsoft 同時提供使用者人為翻譯、機器翻譯及社群編修後的機器翻譯三種版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,所有翻譯文章都可能不盡完美,內容都可能出現詞彙、語意或文法上的錯誤。就翻譯內容之不正確或錯誤,或客戶因使用翻譯內容所產生的任何損害,微軟不負擔任何責任。Microsoft將依合理的商業努力不斷地更新機器翻譯軟體和工具,以期能為使用者提供更好的服務。

按一下這裡查看此文章的英文版本:3082119
徵狀
在 Windows 通訊基礎 (WCF) 用戶端,您建立新的 ICredentials 介面從NetworkCredential類別使用的使用者名稱和指定的密碼。那麼,您要製作接受 ICredentials 做為引數的 WCF 合約方法呼叫。您會發現您轉型回網路認證的 WCF 服務中會收到 ICredentials 之後,[密碼] 屬性會保留為空字串。不過,將Username內容仍會保留有效且正確的值。
發生的原因
這是 Microsoft.NET Framework 4.0 時新的屬性中所引用的已知的問題時, SecurePassword,已加入至NetworkCredential類別。這個屬性會在服務端上還原序列化的SecurePassword屬性時,覆寫原始的密碼字串。SecurePassword屬性是類型 SecureString。根據設計,它不是序列化,並傳送。不過,它會覆寫原始的密碼字串使用空白的值。這個行為也是原本設計的作法。
解決方案
若要修正這個問題,您必須傳遞至獨立的網路認證服務的使用者名稱和密碼資訊。您可以建立的應用程式定義的物件來存放認證,及將認證傳遞至新的 WCF 服務方法可接受做為方法引數物件來執行這項操作。這個應用程式定義的物件包含機密資訊,因為資料透過加密連線至 WCF 服務透過 https 傳送的其中一個的 werecommend 傳輸安全性 」 或 「 訊息層安全性。
其他相關資訊
Followingexample 會顯示會重現問題的 WCF 服務。WCF 服務具有下列的合約:

[] ServiceContract
[] ServiceKnownType(typeof(NetworkCredential))
IService 的公用介面
{

[] OperationContract
字串 GetData(ICredentials value);
}

用戶端使用服務如下所示:

iCredService.ServiceClient svcClient = 新的 iCredService.ServiceClient();
ICredentials iCred = 新的 System.Net.NetworkCredential ("ABC","1234");
字串結果 = 結果 = svcClient.GetData(iCred);

使用 Visual Studio,和設定中斷點,在服務的值。密碼將是空的。當您檢查 Microsoft Visual Studio 的 [區域變數] 視窗時,您會看到下列文字:

-value{System.Net.NetworkCredential}System.Net.ICredentials {System.Net.NetworkCredential}
-[System.Net.NetworkCredential]{System.Net.NetworkCredential}System.Net.NetworkCredential
網域 」 「 字串
"字串的密碼 」
+SecurePassword{System.Security.SecureString}System.Security.SecureString
使用者名稱"ABC"字串
ICredentials NetworkCredential WCF SecurePassword

警告:本文為自動翻譯

內容

文章識別碼:3082119 - 最後檢閱時間:08/30/2015 02:14:00 - 修訂: 1.0

Microsoft .NET Framework 4.0, Microsoft .NET Framework 4.5, Windows Communication Foundation 4, Windows Communication Foundation 4.5

  • kbmt KB3082119 KbMtzh
意見反應