2011-10-10 1 views
3

Nous ajoutons des fonctionnalités à un client Windows Mobile pour envoyer des données à un service .NET. Malheureusement, la classe .cs créée par svcutil.exe génère du code inutilisable pour Compact Framework. (ce nom n'existe pas dans un cadre compact)Y at-il une solution de rechange ou de remplacement pour System.Runtime.Serialization.DataContractAttribute dans Compact Framework (Windows Mobile)

Existe-t-il une solution de remplacement ou une solution tierce ou une solution de contournement ou tout autre moyen permettant à une application mobile de se connecter à un service?

Nous pouvons changer l'API/service pour être compatible avec Compact-Framework. Nous sommes nouveaux dans le jeu des FC (et .NET en général) Nous ne sommes pas sûrs de la façon appropriée d'autoriser les clients des FC - la méthode «prête à l'emploi» convenait aux applications de bureau, mais hélas pas aux mobiles ...

EDIT

J'ai essayé d'utiliser netcfSvcUtil.exe à la place, mais obtenir une erreur (que je ne reçois pas svcutil.exe). Je suppose que cela signifie que le service créé n'est tout simplement pas compatible avec le cadre compact? Je suis absolument ignorant de cela - mais je suppose que les spécifications pour le transfert de données n'ont aucune corrélation entre les plates-formes et que le transport peut être élaboré entre le remorquage. Je suppose que c'est naïf ...

Des suggestions sur comment résoudre ce problème? Ai-je besoin de changer le côté service pour être compatible avec le mobile/compact?

EDIT

les messages d'erreur que je reçois sont:

Error: An Error occurred in the tool.

Error: Error in the application

+0

Quelle erreur avez-vous eu avec netcfsvcutil? En outre, il ne peut utiliser la liaison http de base que si je me rappelle correctement. – tcarvin

+0

L'erreur était inutile - il n'y avait aucune information. Je vais poster bientôt. – Tim

Répondre

1

Vérifiez la version de savon dans wsdl, pas sûr, mais je peux rappeler qu'il y avait un problème avec l'utilisation de SOAP 1.2 dans CF. Si tel est le cas, forcez WCF à utiliser 1.1 dans le fichier de configuration.

De toute façon, postez le message d'erreur. Le problème que vous décrivez semble étrange, car généralement, en cas de problème avec le fichier wsdl, SVC n'essaie pas de générer du code. Êtes-vous sûr d'utiliser svc d'une manière qui produit du code CF? Avez-vous essayé d'utiliser Add Service Reference dans Visual Studio? Cela a bien fonctionné pour moi la plupart du temps.

Modifier: J'ai encore une fois lu votre question. - Vous ne pouvez pas utiliser svcutil.exe 'normal' pour générer du code CF, utilisez netcfsvcutil.exe version - Au lieu de la ligne de commande, je recommande vraiment d'utiliser Visual Studio Add Service Reference, puis l'assistant s'occupe de tout. - Oui, les services Web sont indépendants de la technologie et pris en charge par les FC, assurez-vous simplement d'utiliser les liaisons supportées par CF (par exemple basicHttpBinding) et la version soap supportée par CF.

WCF < -> Le scénario Compact Framework peut prêter à confusion au début, mais il fonctionne bien.

+0

+1 netcfsvcutil ne fonctionne pas non plus - cela donne un message d'erreur inutile. Cependant, un clic droit et l'ajout d'une référence de service a très bien fonctionné. – Tim

+1

Le seul scénario que j'ai trouvé en utilisant netcfsvcutil à partir de la ligne de commande était de faire référence à une bibliothèque avec des définitions de types pour l'interface exposée. Cependant, il n'est pas possible d'utiliser quoi que ce soit d'au-delà de CF dans la définition des types, ce qui est assez commun. Dans la plupart des cas, je recommande d'utiliser VS Wizard, car il est beaucoup plus pratique et rend les mises à jour d'interface beaucoup plus faciles et plus rapides. – mikus

2

Comme je l'ai mentionné dans mon commentaire, la première chose est de vous assurer que le service nous configuration avec une liaison pour le rendre CF-friendly HTTP de base .

+0

OK, merci. Je suppose que ce n'est pas le cas.c'est un wsdl qui ne fonctionnera pas avec CF. Je ne sais pas comment corriger cela. Je suppose que c'est une question complètement différente. – Tim

+0

Est-ce votre service WCF? Si c'est le cas, vous pouvez généralement ajouter un point ednpoint dans votre fichier de configuration. – tcarvin

+0

Oui, c'est un service WCF. Je vais dire à la personne qui a implémenté le service ... merci – Tim

Questions connexes