2016-07-27 3 views
0

Nous sommes aux prises avec un problème étrange depuis quelques jours maintenant. Ont cherché sur le net pour les réponses, mais aucun ne semble résoudre l'erreur. Notre scénario est le suivant: notre organisation dispose d'une application Silverlight 5, qui a été développée dans VS 2010, et tout fonctionnait correctement. Il fonctionne actuellement dans nos serveurs de production.
Récemment, nous avons migré nos machines de développement vers VS 2015, et les machines elles-mêmes (de nouvelles pour le département). L'OS est Windows 7, comme avant.La mise à jour du service Web Silverlight ne parvient pas à importer wsdl

Au début, nous avons été accueillis avec cette erreur MatchTimeoutInMilliseconds méchant, en raison de la MS Framework. Finalement, MS a publié la version 4.6.2 Preview qui couvrait ce problème.

Ok. Pour revenir à l'implémentation des modifications demandées, nous avons créé une nouvelle méthode dans notre service web, et cela s'est très bien passé. Nous avons les étiquettes [OperationContract] et [DataContract] en place. Il y a une question postée et une réponse avec la justification que ces balises étaient manquantes.
Toutefois, lorsque nous accédons à l'application SL et que nous mettons à jour la référence WS, nous obtenons "Erreur d'outil personnalisé: Impossible de générer le code pour la référence de service ..."
Les messages d'avertissement d'outil personnalisé incluent
"Impossible d'importer wsdl: binding ... "
" Impossible d'importer wsdl: port ... "
" Impossible d'importer wsdl: portType ... "
" Aucun terminal compatible avec Silverlight 5. La classe client générée ne sera pas utilisable à moins les informations de point de terminaison sont fournies via le constructeur. " Nous sommes déconcertés, parce que nous pensions avoir fait quelque chose de mal, alors nous avons annulé les changements, et mis à jour la référence de service sans changement, et nous avons la même erreur. Le fichier Referece.cs est généré sans code et toutes les références au service Web ne sont plus reconnues par le compilateur.

Nous avons également lu certains articles qui proposent comme une solution de décocher "Réutiliser les types dans les assemblages référencés". Faire cela efface ces erreurs, seulement pour générer d'autres, puisque notre application a été construite sur cette prémisse.
Nous avons également essayé de supprimer la référence du service et de l'ajouter de nouveau, mais en vain. Finalement, nous avons rétabli l'application SL au point qu'elle compilait, avant de mettre à jour la référence du service Web, republié le WS avec la nouvelle méthode, et ajouté manuellement la nouvelle méthode au fichier Reference.cs, l'avons testé et Ça marche.

Ceci, cependant, ne devrait pas être la solution. C'est un problème et sujettes aux erreurs. Nous apprécierions toute aide pour résoudre ce problème, ou un aperçu de la raison pour laquelle cela se produit.

grâce

+0

Votre service est-il protégé par authentification? – BugFinder

+0

Non. Il est clair et fonctionne sur la même machine –

+0

Eh bien, je suis un peu perplexe alors, parce que j'ai fait la même chose que j'ai eu un vs2010 mais j'ai traversé 2013 mais déplacé vers 2015 et pas rencontré cela. Je n'ai cependant pas bougé à 4.6.2 im sur 4.5 car je pouvais: P – BugFinder

Répondre

0

Le problème est que, pour une raison que je l'ai toujours pas trouvé, VS ne générer le code pour Reference.cs.

Pour contourner ce problème, nous avons réussi à générer le fichier Reference.cs en utilisant l'outil SlSvcUtil.exe, situé (sur ma machine) à « c: \ Program Files (x86) \ Microsoft SDKs \ Silverlight \ v5.0 \ Outils ".

Afin d'obtenir le même code que celui généré avant la migration, j'ai utilisé la commande et les options suivantes:

SlSvcUtil.exe my_ws_address/espace de nom: "*, my_class_namespace"/ct: System.Collections.ObjectModel.ObservableCollection`1/r: "C: \ Program Files (x86) \ Assemblys de référence \ Microsoft \ Framework \ Silverlight \ v5.0 \ System.Windows.dll"/edb/ser: Auto

Je n'ai pas utilisé le commutateur/out, mais j'ai plutôt exécuté la commande sur le répertoire de sortie souhaité. Mais vous pourriez vouloir regarder dans ce commutateur avant d'exécuter la commande.