Question

Il y a plus d'un an, j'avais travaillé sur un service WCF, que j'ai écrit en utilisant VS 2008. Il fonctionne sous un service Windows, que j'ai également écrit. Il y tourne depuis. Et malheureusement, d'autres projets / priorités sont apparus, m'empêchant de poursuivre ce projet jusqu'à présent.

J'essaye maintenant d'y revenir. Cependant, j'essaie de savoir si je peux utiliser VS 2010 et .NET 4 au lieu de .NET 3.5. J'ai ouvert l'invite de commande, pour exécuter SvcUtil, pour obtenir les informations wsdl, que je vais mettre dans le fichier de configuration de la nouvelle application WPF que j'essaie de commencer à écrire. La seule chose est que je reçois toujours une erreur, disant que je ne peux pas accéder au serveur, etc.

J'ai donc copié le fichier .exe.config du serveur sur ma machine, où je pourrais le modifier avec SvcConfigEditor. J'ai apporté ces modifications, je les ai remis sur le serveur et j'ai eu une erreur en essayant d'exécuter SvcUtil, mais pire que cela, je n'ai pas vu les fichiers .svclog que je m'attendais à voir. Je suis donc entré dans l’application Services du serveur. J'ai trouvé le service Windows que j'ai écrit il y a un an; a vu qu'il était en cours d'exécution, puis s'est arrêté et a redémarré.

J'ai maintenant un problème différent. Mon service Windows démarre, puis s'arrête immédiatement. Je reçois ce message disant que le service avait démarré puis arrêté, et disant que cela se produit parfois avec différents types de services, comme les services de journaux de performances et d'alertes. J'ai vérifié le journal des événements sur le serveur, et la seule chose liée à ce service Windows est qu'il est entré dans l'état de démarrage, puis dans l'état arrêté.

Ah, après avoir tenté de le démarrer 4 fois, cela m'a finalement donné une erreur dans le journal des événements! (Pourquoi n'a-t-il pas fait cela en premier lieu? Et qui dit qu'essayer de faire la même chose encore et encore et s'attendre à des résultats différents est un signe de folie, alors que clairement les 3 premières fois, il n'a rien enregistré dans le journal des événements, mais le 4e essai, c'est arrivé.)

Voici l'erreur:

Type d'événement: erreur Source de l'événement: Service1 Catégorie d'événement: Aucun ID d'événement: 0 Date: 4/5/2011 Heure: 10:14:46 AM Utilisateur: N / A Ordinateur: HELIOS Description: Le service ne peut pas être démarré. System.TypeInitializationException: L'initialiseur de type pour 'System.ServiceModel.DiagnosticUtility' a jeté une exception. ---> System.Configuration.ConfigurationErrorsException: impossible de trouver le type pour la classe System.Diagnostics.XmlWriterTraceListener, System, Version= 4.0.0.0, Culture= neutre, PublicKeyToken= b77a5c561934e089. à System.Diagnostics.TraceUtils.GetRuntimeObject (String className, Type baseType, String initializeData)

et voici la nouvelle section de code mise dans le fichier .config par SvcConfigEditor:

<sharedListeners>
<add initializeData="C:\Program Files\ASIWindowsService\ASIWindowsService_tracelog.svclog"
type="System.Diagnostics.XmlWriterTraceListener, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
name="ServiceModelTraceListener" traceOutputOptions="Timestamp">
<filter type="" />
</add>
<add initializeData="C:\Program Files\ASIWindowsService\ASIWindowsService_messages.svclog"
type="System.Diagnostics.XmlWriterTraceListener, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
name="ServiceModelMessageLoggingListener" traceOutputOptions="Timestamp">
<filter type="" />
</add>
</sharedListeners>
Était-ce utile?

La solution

Cette question a été répondue dans les commentaires, mais il y a un piège que j'ai vu dans Visual Studio 2010 qui pourrait entraîner une situation similaire.

Même si le framework cible est défini sur la version 3.x pour un projet WCF, l'utilisation de SvcConfigEditor 2010 insérera automatiquement "System.Diagnostics.XmlWriterTraceListener, System, Version= 4.0.0.0 ..." bien qu'il devrait être inséré"System.Diagnostics.XmlWriterTraceListener, System, Version= 2.0.0.0 ..." Cela vous mordra lors du déploiement du web.config modifié sur un service hébergé IIS où AppPool n'est pas configuré pour utiliser leFramework .NET 4.0.Le correctif consiste simplement à modifier le fichier web.config en "Version= 2.0.0.0".

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top