CORRIGER : Le type de retour ou l’argument out d’une méthode de service ASMX qui inclut une propriété qui a un accesseur Set interne ne peut pas être sérialisé sur un ordinateur qui a le.NET Framework installé


Symptômes


Envisagez le scénario suivant. Un ordinateur équipé de Microsoft.NET Framework 2.0 Service Pack 2 (SP2) ou le.NET Framework 3.5 SP1 est installé. Vous utilisez une méthode de service ASMX qui inclut une propriété et la propriété possède un accesseur Set interne. La sérialisation peut échouer. Ce problème se produit dans un scénario semblable à la suivante :
  • Le type public T inclut une propriété publique qui a un accesseur Get public et un accesseur Set interne. Par exemple, le code source peut ressembler au suivant.
    public class T{

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

    }

  • Dans un service Web, le type de retour ou l’expiration argument d’au moins une méthode de service Web retourne des objets de type T ou objets qui contiennent des T dans les graphiques d’objets. Par exemple, le code source peut ressembler à l’un des exemples suivants.
    • public T MyWebMethod(…){

      }

    • public void MyWebMethod(…, out U){

      }
      ...
      public Class U
      {
      public T <Propertyname2> { get; set; }
      }
  • Type T ou U n’est pas utilisée dans les méthodes de service Web sous la forme d’un argument non-sortie seule.

    Remarque Si une méthode comporte plusieurs en argument, les arguments de sortie sont appelés arguments non-sortie seule.
  • Le type de la propriété qui a un accesseur Set interne n’est pas Enumerable ou la Collection.
  • Avant d’appliquer le.NET Framework 2.0 SP2 ou.NET Framework 3.5 SP1, vous avez généré le code proxy du service Web mentionné précédemment à l’aide de l’outil Wsdl.exe ou la fonctionnalité de référence de Visual Studio Web d’ajouter.
  • Une fois que vous avez déployé le service Web et les clients, vous avez appliqué le.NET Framework 2.0 SP2 ou.NET Framework 3.5 SP1.
Dans ce scénario, le type de retour ou l’argument out de la méthode de service Web mentionnée précédemment n’est pas sérialisée. Cette méthode de service Web est un objet de type T ou un objet qui contient des T dans les graphiques d’objets.

Remarque Actuellement, il n’existe aucun package distinct pour.NET Framework 2.0 SP2. Le.NET Framework 2.0 SP2 est inclus dans le package pour.NET Framework 3.5 SP1.

Résolution


Informations de remplacement du correctif

Le correctif qui correspond à KB952883 a été remplacé avec le correctif KB976814, qui contient tous les correctifs qui ont été précédemment inclus dans KB952883. Vous devez utiliser le correctif KB976814 pour résoudre les problèmes décrits dans KB952883. Pour plus d’informations, cliquez sur le numéro ci-dessous pour afficher l’article correspondant dans la Base de connaissances Microsoft :
976814 correctif : exception A System.InvalidOperationException se produit lorsque vous utilisez un proxy de client WCF qui est généré par l’outil utilitaire de métadonnées de ServiceModel à partir des métadonnées de service qui sont dans.NET Framework 3.5

État


Microsoft a confirmé l'existence de ce problème dans les produits Microsoft répertoriés dans la section « S'applique à ».

Références


Pour plus d'informations sur la terminologie de mise à jour logicielle, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la Base de connaissances Microsoft :
Description 824684 terminologie standard utilisée pour décrire les mises à jour logicielles de Microsoft