Зараз ви перебуваєте в автономному режимі; очікується повторне підключення до Інтернету

Дані про пароль у ICredentials не пройшли WCF-клієнта до служби WCF в .NET Framework 4.5

ВАЖЛИВО! Ця стаття перекладена засобами машинного перекладу Microsoft. Статтю можна редагувати в середовищі Community Translation Framework (CTF). Щоб якомога швидше перекласти всі статті у своїй базі знань різними мовами, компанія Microsoft не лише звертається до професійних перекладачів, але й вдається до машинного перекладу, який потім редагується спільнотою. Такі статті можуть містити лексичні, синтаксичні та граматичні помилки. Microsoft не несе відповідальності за будь-які неточності, помилки або збитки, до яких може призвести неправильний переклад статей або їх використання. Докладніше про CTF див. на веб-сторінці http://support.microsoft.com/gp/machine-translation-corrections/uk-ua.

Клацніть тут, щоб переглянути цю статтю англійською мовою: 3082119
Ознаки
Windows Communication Foundation (WCF)-клієнта створюється новий інтерфейс ICredentialsNetworkCredential класу, використовуючи ім'я користувача та пароль, який зазначено. Після цього ви зателефонувати до методу WCF контракту, який займає ICredentials, як аргумент. Ви знайдете, що після того, як ви шукатиме у ICredentials, що надходять служби WCF до фінансові дані у мережі, пароль властивість містить пустий рядок. Властивість ім'я користувачає проведення дійсний правильні значення.
причина
Це відома проблема, представленим в Microsoft .NET Framework 4.0, коли нові властивості, SecurePassword, було додано до класу NetworkCredential. Ця властивість перезаписує вихідний рядок пароль, під Вільний час SecurePassword властивість, скасувати серіалізацію з боку служби. Властивість SecurePasswordмає тип SecureString. Передбачено він не є серіалізованной та надіслано. Однак це перезаписує вихідний рядок пароль за допомогою пусте значення. Ця поведінка є також передбачено.
Розв'язанн
Щоб вирішити цю проблему, потрібно передати дані користувача та пароль, застосунок-служба, незалежно від мережі-облікових даних. Це можна зробити за допомогою створення об'єкт застосунку, визначені для розміщення облікові дані а пропускає облікові новий спосіб служби WCF, яка приймає об'єкт як аргумент спосіб. Через те, що цей об'єкт, визначений у застосунку, містить конфіденційні відомості, werecommend, які дані надіслано через зашифроване підключення до служби WCF за допомогою або https транспорту безпеки або протокол IMAP рівень безпеки.
Додаткові відомості
У 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 та автоматична інсталяція зупинки, у службі значення. Пароль, буде порожнім. Після цього windows місцеві жителі 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 SecurePassword WCF

Попередження. Цю статтю переведено автоматично

Властивості

Ідентифікатор статті: 3082119 – останній перегляд: 08/30/2015 02:13:00 – виправлення: 1.0

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

  • kbmt KB3082119 KbMtuk
Зворотний зв’язок
ipt> /html>