J'ai eu des erreurs d'exécution de la production que je ne comprends pas complètement. Cela nous est arrivé sur quelques sites Web ASP.NET 4.0 différents ( shudders em> - oui, je sais - nous le portant à MVC mais qui prend du temps). Tout d'abord , nous n'avons jamais été en mesure de reproduire ce problème dans les environnements de développement / QA. Deuxièmement, lors du déploiement, le problème semble être inexistant. Parfois, le problème se manifeste dans les jours ou deux de déploiement et d'autres fois que le déploiement sera vivant pendant un mois sans se manifester du tout. Cependant, une fois qu'il se manifeste, toute page visualisée sous le site Web provoque l'erreur. Enfin, ce problème sembla venir seulement venir une fois que nous avons migré vers .NET 4.0. Nous avons commencé à 2,0, il y a un an à 3,5 ans et nous avons récemment augmenté de 4,0 avec cette solution et la plupart des projets d'enfants. P> L'erreur:
une version simplifiée de notre site Sitemap (avec certains noms de noms de modification et de désintéressation supprimés) est la suivante: p> il est enregistré dans notre web.config: p> et des journaux, j'ai réduit la diminution de l'erreur est dans une classe de base qui à peu près toutes nos pages dérivent de: p> J'ai confirmé dans tous les sitemaps qu'il existe un nœud avec URL = "~ / par défaut .aspx "avec roles =" * "(qui inclut l'accès public / anonyme), donc je suis très confus quant à pourquoi ce problème se produit. P> Les problèmes que j'ai envisagés: p> Quelqu'un peut-il perdre une lumière sur cela? Il semble presque comme si le planite compilé de manière dynamique est corrompu ou quelque chose. La seule résolution que j'ai trouvée est un n'a pas pu trouver le noeud de planite avec URL '~ / par défaut.aspx'. code> p>
iisreset code> ou équivalent. Et même alors, il n'ya pas de dire quant à combien de temps le problème sera résolu. Ceci est très frustrant! P> p>
3 Réponses :
hmm. Son été quelques années depuis que j'ai travaillé avec ASP.NET, mais si je me souviens, j'ai eu un problème similaire que j'ai résolu avec au moment de l'exécution, les URL du site Sitemap sont résolues à l'URL actuelle. , de sorte que la tilde est retirée et remplacée par l'URL actuelle (je pense :)). p> p>
Alors l'avez-vous résolu vous-même? OIF Ainsi, d'autres personnes peuvent être intéressées à savoir comment. Comme je l'ai dit, c'est un moment.
Nope, la solution de bande la moins intrusive que j'ai trouvée et utilisée aujourd'hui est d'avoir un service automatisé email moi chaque fois que cela se passe et que j'effectue une modification triviale vers le web.config pour forcer l'application à recompiler (comme l'ajout d'un espacer). Toujours pas de vraie solution.
J'ai deux idées possibles pour ce problème. Ni n'est garanti de travailler. ; -)
est-il possible que vous utilisiez également une autorisation d'URL au même? Temps dans certains de vos fichiers web.config situés dans différents dossiers Tout au long de votre application Web? P>
exemple de paramètre d'autorisation d'URL qui pourrait être trouvé dans un Web.config File: P>
<asp:SiteMapDataSource id="SiteMapDataSource1" runat="server" StartingNodeUrl="~/Default.aspx"> </asp:SiteMapDataSource>
Je mettais un post précédent sur ce fil qui a été supprimé :( de toute façon que j'ai "eu" le même problème.
J'ai trouvé que peu importe ce que j'ai fait "Impossible de trouver le nœud Plan du site avec URL '~ / RootNode "Je suis arrivé. Ma pause est arrivée lorsque j'ai décidé de supprimer la dépendance du système de fichiers et de passer au En bref, vous obtenez ce message car il n'y a pas de plan de site! J'ai trouvé que sur la source de données cartographique du site si vous utilisez le semblait étrange pour moi mais je l'ai retrouvé au XMLSitemAlvider. Parfois, il a construit parfois ce n'est pas le cas. Impossible de me mettre complètement la tête sous le capot, mais cela ressemblait à quelque chose qui se passe asynchroneusement. Anyh ow, je suis passé au SQLSitemAlvider de WickedCode. p> Un changement que j'ai fabriqué, de côté de la conversion en VB consistait à mettre un appel récursif sur le retour du [code> BuildsItemap code> Méthode: p> sqlsitemApprovider code> du code méchant. J'ai constaté que ce problème était plus fiable recréé. p>
débutnodeurl = "~ / root.htm" code> puis le message d'erreur apparaîtra quand N'y a-t-il pas de plan de plan de plan. Toutefois, si vous utilisez
débutnodeoffset = "0" code>, le message d'erreur n'est pas affiché et il n'y a tout simplement pas de menu rendu lorsque le site n'est pas construit. P>
' Return the root SiteMapNode
If _Root Is Nothing Then
Return Me.BuildSiteMap
Else
Return _Root
End If
De quel serveur est-ce hébergé?
Nous avons toujours ce problème et j'aimerais toujours avoir une réponse pour cela ...
Peu de choses étranges dans votre code, je ne comprends pas. ~ est le site Web racine: pourquoi ~ /../? Travaillez-vous avec des sites Web distincts IIS? vide privé page_load sur une page de base: privé et non protégé (l'événement est viré?)? Page_load sur la page de base au lieu de surcharger? Il semble s'agir d'une erreur de contexte de site Web: votre environnement de production IIS peut différer?
Si vous avez mis à niveau vers .NET 4, pourquoi les types de xmlsitemAvrovider sont-ils toujours pointés vers la version 2? Une trace de pile serait également agréable de voir et vous devriez envisager d'ajouter du code pour vider le contenu de l'instance xmlsitemAvousider lorsque l'erreur se produit.
>> (Shudders - Oui, je sais - nous le portant à MVC mais cela prend du temps) .. Prenez une profonde respiration. Vous aurez toujours des bugs dans mvc
Je n'ai jamais répondu aux questions ci-dessus. Pour pourquoi
~ /../ke/ code>, nous avons plusieurs applications Web qui sont "intégrées" via URL Navigation dans notre menu et notre menu est motivé par le plan du site. Clairement, nous avons plus de 3 pages dans chaque application afin que le site ci-dessus soit simplifié un peu, mais c'est pourquoi nous avons le
~ /../ code> Chemins. Oui,
page_load code> est tiré (nous avons d'autres trucs là aussi). Pour
xmlsitemApprovider code>, voilà ce que msft a pour .NET 4: msdn.microsoft.com/en-us/Library/...