Frage

Ich mache das Böse Code Implementierung von SQLSitemapprovider, außer in VB.NET.

Es gibt ein paar Dinge mit dem Code, die Probleme verursachen, und ich verstehe nicht, wie er so funktionieren soll, wie er im Artikel geschrieben ist. Ich habe den Code direkt aus dem unten angegebenen Artikel bereitgestellt. Ich habe den Code hier eingefügt, um sie leicht zu sehen

Erstes Problem-Die Depeedcy wird vor (Zeilen 134-137) so instanziiert Immmed - was den gesamten Proccess wieder verlaufen lässt - und diese Schleife viele Male, bis es schließlich etwas aufhört. (Ich trat durch und zählte die Code -Looping mindestens 20 Mal, bevor ich es aufgab, zu erraten, wann er zuletzt traf.)

OK, um dies zu beheben, habe ich den Code gerade in die Abhängigkeit erstellen, um nach dem Erstellen des Baumes zu erstellen, kurz bevor ich in http.cache einfügte (daher ist die Eigenschaft beim Hinzufügen zu http.cache falsch und du steckst nicht fest in diesem PSUDO-IFINITE-Schleife).

Ich habe jedoch immer noch ein Problem - jedes Mal, wenn eine Seite lädt Willst du jedes Mal die DB schlagen. Jetzt füge ich einen Datensatz in die Tabelle ein ... das OnSitemapchanged -Ereignis feuert nie. Wenn ich Seiten in der App stöbere, spiegelt der Sitemap den neu eingefügten Datensatz nicht wider - wenn ich den Code durchträgt, sehe ich, dass die Überprüfung in Zeile 121 immer noch die Funktion zum Kurzschluss verursacht ... die Sitemap wird nur aktualisiert, wenn ich mich rediere -Start Visual Studio, das dazu führt, dass das private _root-Feld wieder null wird und die Sitemap wieder aufbaut und die neuen Änderungen widerspiegelt.

Bearbeiten: Das Problem stammt aus einem albernen "Set Nocount in" Zeile oben in meinem gespeicherten Proc. Anscheinend bricht dies die Anfragebenachrichtigung. Es scheint, dass diese Aussage als Ergebnismenge angesehen wird und dass die zweite, tatsächliche Abfrageanweisung den Ergebnissatz ungültig macht, was zu einer Benachrichtigung führt. Dies war sehr schwer zu finden und nirgends in der MSDN -Dokumentation, bis ich den Kommentar hinzufügte. Hoffe das rettet jemand anderem den Geiz, den ich durchgemacht habe!

War es hilfreich?

Lösung

Das Problem stammte aus einem dummen "Set Nocount auf" Linie in meinem gespeicherten Proc. " Anscheinend bricht dies die Anfragebenachrichtigung. Es scheint, dass diese Aussage als Ergebnismenge angesehen wird und dass die zweite, tatsächliche Abfrageanweisung den Ergebnissatz ungültig macht, was zu einer Benachrichtigung führt. Dies war sehr schwer zu finden und nirgends in der MSDN -Dokumentation, bis ich den Kommentar hinzufügte. Hoffe das rettet jemand anderem den Geiz, den ich durchgemacht habe!

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top