2010-11-04 5 views
1

J'ai un rôle de service et de travail WCF que j'ai débogué localement sur Azure Development Fabric. Tout va bien, mais maintenant que j'essaie de le déployer dans le cloud dans un environnement de mise en scène, je vois des problèmes étranges.Pourquoi mon service WCF Azure ne passe-t-il pas de Occupé à Prêt?

  1. Mon rôle de travail, infiniment plus complexe que le service, fonctionne correctement. Cela va de Initialisation -> Occupé -> Prêt.
  2. Mon rôle de service, cependant, passe de Initialisation -> Occupé, puis l'état ne change plus jamais.

J'ai lu quelques articles sur Initialiser -> Occupé -> Arrêt des boucles, mais ce n'est pas le comportement que je vois. En fait, lorsque j'essaie d'utiliser IntelliTrace, je ne peux pas accéder aux journaux pour le service car il ne passe jamais au statut de non-réponse. Je suis en mesure d'accéder aux journaux pour le rôle de travail chargé avec succès.

Comment suis-je censé résoudre ce problème si je ne peux pas voir les journaux ou attacher un débogueur pour comprendre ce qui se passe? Encore une fois, ce service fonctionne parfaitement sur mon environnement local.

Et avant que quiconque ne l'indique, je l'ai déjà fait ce qui suit:

  1. Vérifiez la DiagnosticsConnectionString et assurez-vous qu'il est connecté à mon compte de stockage
  2. Activer IntelliTrace sur le déploiement.
  3. Vérifiez toutes les assemblées référence pour assurer que les assemblées non-.NET sont « copier au niveau local = true »

Il serait vraiment bien si Azure exposé une sorte de console pour que je puisse voir ce qui se passe.

Répondre

1

Plus tard cette année, vous serez en mesure d'utiliser Remote Desktop pour vous connecter et voir ce qui se passe.

Pour l'instant, vous pouvez contacter le service d'assistance, qui devrait vous aider.

Généralement, "Occupé" est l'état dans lequel vous vous trouvez lorsque vous exécutez du code dans OnStart(). Y a-t-il une chance que votre implémentation OnStart() ne retourne pas? (Ou peut-être un constructeur?)

+0

Je ne fais qu'exécuter une seule ligne de code ... c'est un RouteTable.Routes.Add() - savez-vous si c'est interdit sur Azure? –

+0

Non, cela devrait fonctionner, mais c'est probablement dans Global.asax.cs quelque part (pas dans OnStart() dans WebRole.cs), non? – smarx

1

Dans mon expérience, lorsque Azure commence à jouer blackbox dans la production, cela est dû aux problèmes avec la configuration. Une des raisons possibles - section de configuration est reconnue sur votre ordinateur local, mais n'est pas disponible sur Windows Azure Guest OS.

Dans ce cas, votre rôle n'aura même pas l'occasion de dire quelque chose à IntelliTrace ou à un enregistreur (il n'est pas chargé). Par exemple, si vous avez une section uri config dans votre fichier web.config, cela peut fonctionner localement, mais Azure va geler le déploiement Web en production. Fix (dans ce cas):

add ligne suivante à la configuration/configSections:

<section name="uri" type="System.Configuration.UriSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/> 

Votre cas peut être différent. Recherchez simplement les configurations ou les cas inhabituels, où le schéma est peut-être inconnu de l'OS Azure Guest sur lequel vous travaillez.

0

J'ai eu le même problème et j'ai fini par commencer par un projet vide. Getteing pour courir dans le nuage. Ajout de quelques lignes, déploiement.

Finalement (après 10 déploiements ... savez-vous combien de temps cela prend?) Je l'ai eu à travailler ... une cause était dans le fichier de configuration. Cependant, je ne l'ai pas retracé jusqu'à une ligne.

La prise en charge du support serait la bonne chose à faire, comme le suggère smarx.

Questions connexes