2010-01-14 5 views
1

Après près de 5 mois avec cette configuration, je reçois maintenant une série de:IIS7/Win7 - App piscine ne parvient pas tout à coup

« Un processus pool d'applications '.NET classique AppPool' a subi une erreur de communication fatale avec le service d'activation de processus Windows L'ID de processus était '1640'. "

Cela conduit à:

pool d'applications « .NET classique AppPool » est automatiquement désactivé en raison d'une série d'échecs dans le processus (s) servant ce pool d'applications.

Je ne peux pas, pour la vie de moi, de savoir ce qui a changé pour commencer à l'origine de ce que je ne peux comprendre comment peut creuser plus profondément pour découvrir ce est à l'origine à l'échec.

J'ai récemment (2 semaines passés) commencé à ajouter Entity Frameworks à ma solution. Juste avant que cela ne se produise, j'ai reçu une erreur «d'espace de pile» due à un appel auto-référencé signalé. Je ne trouve aucun appel comme celui-ci dans le code que j'ai écrit et je suspecte EF d'avoir ajouté une jointure dans mon modèle simple (3 tables) qui est faux.

Des idées sur où commencer à chercher? Qu'est-ce qui provoquerait l'échec de AppPool?

TIA


NOTE:

Une exception non gérée du type 'System.StackOverflowException' est produite dans mscorlib.dll

J'ai un objet extérieur qui appelle cette méthode pour obtenir un seul enregistrement:

public static AutoNegotiationDetails GetAutoNegotiationByCompany(Guid companyId) 
{ 
    return RivWorks.Controller.Negotiation.GetAutoNegotiationByCompany(companyId); 
} 

Cette méthode remet en:

internal static AutoNegotiationDetails GetAutoNegotiationByCompany(Guid companyId) 
{ 
    var autoNeg = from a in _dbRiv.AutoNegotiationDetails where a.CompanyId == companyId select a; 
    var ret = autoNeg.FirstOrDefault(); 
    return ret; 
} 

En parcourant ce que je peux mettre un point de rupture dans la première méthode, l'étape dans la deuxième méthode, voir le dossier rempli, retournez à la première méthode finalement quitte la méthode. À ce stade, mon IDE se bloque pendant quelques secondes jusqu'à ce que je reçois l'erreur StackOverflow.

Pour une image plus précise de l'ensemble du système:

  • Courir WebOrb30 sur la machine IIS.
  • Dans l'IDE VS -> Attacher au processus (INETINFO.exe)
  • Connectez-vous à WebOrb30 -> Management Console -> Drill jusqu'au point d'entrée de service -> Entrer CompanyID dans la boîte d'entrée -> Cliquez Invoke
  • point de rupture de Hit dans VS IDE -> (Voir ci-dessus)

NOTE:

on dirait que cela peut être causé par une autre question dans EF. Voir C# - Entity Framework - An unhandled exception of type 'System.StackOverflowException' occurred in mscorlib.dll pour plus de précisions.

+0

pouvez-vous publier la méthode (partie) qui appelle GetAutoNegotiationByCompany? – gingerbreadboy

Répondre

0

En raison d'un bogue dans mon Entity Framework, je recevais un appel cyclique dans l'une de mes relations. Cela provoquait un débordement de pile qui a été signalé à WebOrb comme une erreur générale et WebOrb s'arrêtait provoquant le blocage du pool d'applications. (Je ne comprends toujours pas toutes les spécificités). Quand j'ai reconstruit mon modèle EF sans les relations, le comportement a disparu. (soupir /)

EF sera une autre question (ou une série de questions).

0

Il se peut que vous ayez deux applications/sites utilisant un même pool d'applications, mais les applications/sites exécutent des versions .net différentes.

Cela pourrait ne pas être le cas, mais c'est le seul problème récurrent similaire que j'ai jamais eu avec iis.

+0

J'ai seulement une application en ce moment même si elle exécute également un service simple de WCF (et a été pendant quelques semaines). J'ai ajouté à mon message afin que cela puisse éclairer une autre direction. –

Questions connexes