2010-09-27 4 views
1

Je rencontre un comportement étrange avec le développement de services Web très basiques. Cette question pourrait être stupide mais je pense que quelqu'un serait en mesure d'expliquer cette observation.Est-ce un problème de nom?

Je développe un service Web avec une méthode web, MyWebMethod

MyWebMethod(MyEnum Param, .....) 

Où,

public enum MyEnum : int 
    { 
     Type_1 =1; 
     Type_2 =2; 
     Type_3 =3; 
    } 

Maintenant, je me sers de mon client pour communiquer avec ce service, mais pour chaque type de demande, TYPE_1 , Type_2 etc le service le capture comme Type_1. Par exemple, si je crée un point d'arrêt sur MyWebMethod dans mon service Web, je vois Type_1 comme type param1. Je suppose que c'est un problème avec Namespacing. Je ne peux pas voir d'autres défauts sur le code. Toute idée basée sur les expériences?

+1

Certainement pas, un «espace de nommage. Quoi que cela puisse être. – leppie

+1

L'affichage de votre code 'client' peut aider. – Manish

+0

Alors, qu'attendez-vous plutôt? Voulez-vous les utiliser comme type int? :) –

Répondre

2

Lorsqu'une énumération est sérialisée, seule sa représentation sous forme de chaîne est transférée via un fil (noms), et non les valeurs. Je crois que c'est la raison pour laquelle vous obtenez les mauvaises valeurs.

Regarde ce problème 2 articles pour plus d'informations

  1. WebServices_and_Enums
  2. Using enum in web service parameter
0

Si cela est un service Web WCF et un client .NET 2.0 généré avec wsdl.exe pour chaque type de valeur dans la signature de la méthode, il y aura un paramètre booléen ajouté appelé XXXSpecified que vous devez définir à true. Cochez cette case blog post pour plus de détails.

0

Je suppose que votre énumération n'a pas besoin d'hériter de int. Vous fournissez le nom et la valeur dans l'énumération, cela devrait suffire. Je suppose que tout votre code est .NET 2.0. En tant que test, renvoyez une valeur d'énumération à partir du service Web. Juste pour vous assurer que la sérialisation XML fonctionne comme prévu lorsque le service est touché directement par le navigateur.

Questions connexes