El campo Contraseña está vacío cuando se deserializa un objeto NetworkCredential en el servicio WCF
Este artículo le ayuda a solucionar el problema de que el campo de contraseña está vacío al deserializar un objeto que se pasa como parámetro a una operación de servicio de NetworkCredential Windows Communication Foundation (WCF).
Versión del producto original: Microsoft .NET Framework 4.5
Número KB original: 3021166
Síntomas
Al deserializar un objeto que se pasó como parámetro a una operación de servicio WCF, se detecta que el campo NetworkCredential de contraseña está vacío.
Por ejemplo, tiene un contrato WCF definido de la siguiente manera:
[ServiceContract] public interface IService
{
[OperationContract] string GetData(NetworkCredential myCredential);
}
Cuando se GetData llama a la operación desde un cliente que pasa una NetworkCredential cadena, el valor está myCredential.Password vacío.
Causa
Es un problema conocido que se introdujo en el .NET Framework 4.0. El problema se produce cuando se agrega un nuevo valor SecurePassword de propiedad a NetworkCredential . Esta propiedad sobrescribe la cadena de contraseña original cuando NetworkCredential el objeto se deserializa en el lado del servicio.
Solución alternativa
Para evitar este problema, pase el nombre de usuario y la contraseña como cadenas y, a continuación, cree un NetworkCredential objeto en el servicio.