REVISIÓN: El tipo de valor devuelto o el argumento out de un método de servicio ASMX que incluye una propiedad que tiene un establecedor interno no puede serializar en un equipo que tiene instalado el de.NET Framework


Síntomas


Considere el siguiente escenario. Tiene un equipo que tiene el Service Pack 2 (SP2) de Microsoft.NET Framework 2.0 o.NET Framework 3.5 SP1 instalado. Utilice un método de servicio ASMX que incluye una propiedad y la propiedad no tiene un establecedor interno. La serialización puede fallar. Este problema se produce en un escenario similar al siguiente:
  • El tipo público T incluye una propiedad pública que tiene un captador público y un establecedor interno. Por ejemplo, el código sería similar al siguiente.
    public class T{

    public <Type> <Propertyname1> { get; internal set; }

    }

  • En un servicio Web, el tipo de valor devuelto o el out argumento al menos un método de servicio Web devuelve objetos de tipo T u objetos que contienen T en sus gráficos de objetos. Por ejemplo, el código fuente puede ser similar a uno de los ejemplos siguientes.
    • public T MyWebMethod(…){

      }

    • public void MyWebMethod(…, out U){

      }
      ...
      public Class U
      {
      public T <Propertyname2> { get; set; }
      }
  • Tipo T o tipo U no se utiliza en los métodos de servicio Web como un argumento no-sólo out.

    Nota: Si un método tiene más de un argumento out, los argumentos se denominan argumentos no-sólo out.
  • El tipo de la propiedad que tiene un establecedor interno no es Enumerable o colección.
  • Antes de aplicar el Service Pack 2 de.NET Framework 2.0 o.NET Framework 3.5 SP1, genera código proxy para el servicio Web mencionado anteriormente mediante la herramienta Wsdl.exe o la característica de Visual Studio Web de agregar referencia.
  • Después de implementar el servicio Web y los clientes, se aplica a.NET Framework 2.0 Service Pack 2 o el Service Pack 1 de.NET Framework 3.5.
En este escenario, no se serializa el tipo de valor devuelto o el argumento out del método de servicio Web mencionados anteriormente. Este método de servicio Web es un objeto de tipo T o un objeto que contiene T en sus gráficos de objetos.

Nota: Actualmente, no hay ningún paquete independiente para el Service Pack 2 de.NET Framework 2.0. .NET Framework 2.0 Service Pack 2 se incluye en el paquete para.NET Framework 3.5 SP1.

Solución


Información de reemplazo de hotfix

Se ha sustituido el hotfix que corresponde a KB952883 con la revisión KB976814, que contiene todas las correcciones que anteriormente se incluían en KB952883. La revisión KB976814 debe utilizar para corregir los problemas descritos en KB952883. Para obtener más información, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
976814 FIX: A System.InvalidOperationException excepción se produce cuando se utiliza un proxy de cliente WCF generado por la herramienta Utilidad de metadatos de ServiceModel de los metadatos del servicio que está en.NET Framework 3.5

Estado


Microsoft ha confirmado que se trata de un problema de los productos de Microsoft que se enumeran en la sección "Aplicable a".

Referencias


Para obtener más información acerca de la terminología de la actualización de software, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
824684 descripción de la terminología estándar que se utiliza para describir las actualizaciones de software de Microsoft