2009-04-10 9 views
0

J'ai une opération de service WCF qui accepte un paramètre de contrat de données de type personnalisé MyQuery - function Search(q as MyQuery). L'objet MyQuery contient 2 propriétés:Flex & WCF - Erreur d'énumération

MyQuery.SearchPhrase (string) 
MyQuery.SearchType (custom enum SearchTypeEnum) 

J'ai également une application client Flex qui utilise ce service. Mais quand Flex appelle la recherche() opération, je reçois l'erreur suivante sur la propriété de l'énumération:

« Impossible de trouver la définition pour le type 'http://mydomain/2009/04/SearchTypeEnum::SearchTypeEnum »

L'erreur est renvoyée de Flex alors qu'il est la construction de la demande au service.

Donc, ma question est ... est-il possible de contourner ce problème dans Flex? Ou est ma seule alternative pour redessiner le service sans enums?

Voici comment le contrat de données ENUM est défini au niveau de service:

<DataContract(Namespace:="http://mydomain/2009/04/SearchTypeEnum")> _ 
Public Enum SearchTypeEnum 
    <EnumMember()> [Boolean] = 0 
    <EnumMember()> [NaturalLanguage] = 1 
End Enum

Pour autant que je sais que c'est la définition correcte d'un contrat de données ENUM. J'ai également essayé d'utiliser les attributs ServiceKnownType et KnownType sur le service et sur la classe MyQuery mais en vain.

Répondre

0

Je ne pouvais pas trouver un moyen de faire fonctionner cela. Au lieu de cela, j'ai remplacé les énumérations par des constantes de chaînes. Pas aussi élégant, mais ça marche.

0

Je vous recommande d'essayer cela avec un client .NET trivial - peut-être même une application console. L'idée serait de voir si vous pouvez obtenir une application pour travailler avec le service.

+0

Merci - J'ai déjà essayé avec un client .NET et cela fonctionne très bien. Je devrais également noter que j'ai d'autres opérations de service qui fonctionnent bien de Flex. Ce n'est que lorsque les enums sont introduits que cette erreur se produit. – Keith

Questions connexes