Question

Je fais Wicked code de la mise en œuvre de SqlSiteMapProvider, sauf en VB.NET.

Il y a quelques petites choses avec le code qui sont à l'origine des problèmes, et je ne comprends pas comment il est censé fonctionner comme il est écrit dans l'article. J'ai fourni directement le code de l'article ci-dessous. J'ai collé le code ici pour faciliter la visualisation

Première question - la depedency est instancié AVANT (lignes 134-137) l'arbre est créé (151-160) - dès que vous ajoutez le depedency à la http.cache (165-167), l'événement OnSiteMapChanged ( 242) les feux immmediately - faire à nouveau la course entière proccess - et cela boucles plusieurs fois jusqu'à ce que finalement quelque chose fait arrêter. (I travers et entrai comptais le code en boucle au moins 20 fois avant que j'ai renoncé à essayer de deviner quand il a frappé dernier)

OK, donc de résoudre ce problème, je viens de déménager le code à créer la dépendance à Une fois l'arbre construit, juste avant de l'insérer à http.cache (donc hasChanged propriété est faux lors de l'ajout à http.cache, et vous n » t se coincer dans ce pseudo-ifinite boucle).

Il me reste un problème - à chaque chargement de page, le BuildSiteMap () visites et ligne 121 vérifie si _root est non nulle - il semble que ce n'est jamais nul après avoir été d'abord construit ... ce qui est bon parce que je ne veulent pas de frapper la DB à chaque fois. Maintenant, insérer un enregistrement dans la table ... l'événement OnSiteMapChanged ne se déclenche. Comme je naviguer sur des pages sur l'application, le plan du site ne reflète pas l'enregistrement inséré - parcourant le code, je vois que le chèque à la ligne 121 est à l'origine encore la fonction court-circuit ... Le plan du site ne rafraîchira si je re -start Visual studio, ce qui provoque le domaine _root privé pour devenir nulle à nouveau, et re-construit le plan du site, ce qui reflète les nouveaux changements .. (actualisant le navigateur ou le démarrage de nouvelles instances de navigateur ne fonctionne pas) ...

EDIT: LA QUESTION D'UN IDIOT STEMMED 'SET NOCOUNT ON LINE EN HAUT DE MON PROC STORED. APPAREMMENT CE BRISE LA NOTIFICATION QUERY. Il semble que cette déclaration est considérée comme un ensemble de résultats et que la seconde, instruction de requête réelle annule le jeu de résultats résultant dans une notification. Cela a été très difficile à trouver et nulle part dans la documentation MSDN jusqu'à ce que j'ajouté le commentaire. Espérons que cela sauve quelqu'un d'autre le radin que je suis passé par!

Était-ce utile?

La solution

LA QUESTION D'UN IDIOT STEMMED 'SET NOCOUNT ON LINE EN HAUT DE MON PROC STORED. APPAREMMENT CE BRISE LA NOTIFICATION QUERY. Il semble que cette déclaration est considérée comme un ensemble de résultats et que la seconde, instruction de requête réelle annule le jeu de résultats résultant dans une notification. Cela a été très difficile à trouver et nulle part dans la documentation MSDN jusqu'à ce que j'ajouté le commentaire. Espérons que cela sauve quelqu'un d'autre le radin que je suis passé par!

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