Frage

Wir haben mehr ASP.NET-Anwendungen, die eine Sitemap verwenden, die über eine VB.NET Implementierung des SqlSiteMapProvider bevölkerte Beispiel unter Wicked-Code . Es wird auf eine DLL kompiliert, dann installiert und auch aus dem GAC auf den Servern und von unseren Einheimischen verwiesen. Es hat sich in der Produktion gut für ein paar Monate jetzt. Ich sollte auch beachten, wir SQL Server 2008 verwenden

Heute kamen wir in und in der Produktion festgestellt, dass es keine Menüpunkte wurde für eine der Anwendungen, die auf die Sitemap in prod überhaupt angezeigt werden. Dev & QA sah gut aus. Wir haben keine maintenence zu SQL Server in prod in geraumer Zeit getan, lange bevor wir überhaupt noch SQLSiteMapProvider umgesetzt. Wir haben auch keine Aktualisierung eine der Web-Apps vor kurzem.

Das erste, was ich tat, war die prod web.config nehmen und ihn auf meine web.config in meine IDE und die App laufen - immer noch das gleiche Problem. Dies sollte ein IIS Problem ausschließen, da der Fehler auf meinem Rechner auch repliziert wurde.

Da dies ein wenig dringlich war, das nächste, was ich tat, war einfach Einsatz eines Dummy-Datensatz in die Sitemap Tabelle in prod, um zu sehen, was passieren würde. Puh, wie Magie wurden die Menüpunkte wieder hergestellt und alles war gut. Ich löschte den Dummy-Menüpunkt aus und es ohne Probleme synchronisiert.

Das war ein bisschen beängstigend aber, und ich versuche, herauszufinden, warum dies so geschehen, dass es nicht wieder in der Zukunft passiert. Hat jemand dies zuvor erlebt? Wenn Sie noch nie SqlSiteMapProvider verwendet haben - verwendet es einfach SqlDependencyCache / ASP.NET-Cache die Menüpunkte zu speichern, dann wenn die Ergebnismenge der gespeicherten proc, die die Links Änderungen gibt es ASP.NET erzählt dies passiert ist, und es wieder auffüllt die Sitemap / cache ...

Vielleicht ist die Verbindung zwischen dem Web-Server und SQL Server irgendwie starb? Und ein Datensatz einfügen machte es wieder und wieder ‚aufwacht‘? Vielleicht gibt es einen Timeout-Wert oder irgendeine Art von IsStillConnected () Funktion irgendwo muß ich auf Pageload überprüfen, um sicherzustellen, dass die Verbindung immer noch im Takt? Oder vielleicht dachte ASP.NET die gespeicherte Prozedur wurde aus irgendeinem Grund keine Werte zurückgegeben werden, bis wir einen Datensatz in die Tabelle eingefügt? Hat jemand dieses Problem gesehen vor?

Vielen Dank im Voraus für jede Beratung.

EDIT: all dies kam eine SET NOCOUNT ON in meiner gespeicherte Prozedur aus mit. IN ACHT NEHMEN! Dies ist nicht in der MSDN-Dokumentation überall und mir wirklich geschraubt für eine Weile!

War es hilfreich?

Lösung 2

Überprüfen Sie meine bearbeiten;)

all dies kam eine SET NOCOUNT ON in meiner gespeicherte Prozedur aus mit. IN ACHT NEHMEN! Dies ist nicht in der MSDN-Dokumentation überall und mir wirklich geschraubt für eine Weile!

Andere Tipps

SqlDependency ist nicht gerade ein Kraftwerk der Stabilität. Hier sind einige der Artikel, die vielleicht etwas Licht kann:

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