Domanda

Abbiamo diverse applicazioni ASP.NET che utilizzano una mappa del sito che è popolata tramite un'implementazione VB.NET dell'esempio SqlSiteMapProvider trovato alla Codice Wicked . Esso viene compilato in una DLL, poi installato e referenziata dal GAC sui server e dai nostri locali pure. E ha lavorato nella produzione di bene per un paio di mesi. Vorrei anche notare che stiamo usando SQL Server 2008

Oggi siamo venuti in e ho notato nella produzione che non vi era alcun voci di menu visualizzati a tutti sul sito di prod per una qualsiasi delle applicazioni. Dev e QA guardato bene. Non abbiamo fatto alcuna maintenence a SQL Server in prod in un po 'di tempo, molto tempo prima che abbiamo mai ancora implementato SQLSiteMapProvider. Abbiamo anche non aggiornato una delle applicazioni web di recente.

La prima cosa che ho fatto è stato prendere il web.config prod e la mise al mio web.config nella mia IDE ed eseguire l'applicazione - ancora lo stesso problema. Questo dovrebbe escludere un problema di IIS dal momento che il bug è stato replicato sulla mia macchina pure.

Dato che questo era un po 'urgente, la prossima cosa che ho fatto è stato semplicemente inserire un record fittizio nella tabella sitemap in prod per vedere cosa sarebbe successo. Puf, come per magia, le voci di menu sono stati restaurati e tutto andava bene. Ho cancellato la voce di menu fittizio ed è sincronizzato senza alcun problema.

Questa è stata un po 'paura, però, e sto cercando di capire il motivo per cui questo è accaduto in modo che non accada di nuovo in futuro. Qualcuno ha sperimentato prima? Se non avete mai usato SqlSiteMapProvider - usa semplicemente cache / ASP.NET SqlDependencyCache per memorizzare le voci di menu, quindi se il set di risultati della stored procedure che restituisce i link modifiche, racconta ASP.NET questo è accaduto ed è ri-popola la Mappa del sito / cache ...

Forse la connessione tra il server Web e di SQL Server in qualche modo è morto? E l'inserimento di un record ha reso 'svegliarsi' e ricollegare di nuovo? Forse c'è un valore di timeout o un qualche tipo di IsStillConnected () funzione da qualche parte ho bisogno di controllare il PageLoad per assicurarsi che la connessione è ancora in-tatto? O forse ASP.NET pensato che il proc memorizzato stava tornando nessun valore per qualche ragione fino a quando abbiamo inserito un record nella tabella? Qualcuno ha visto questo problema prima?

Molte grazie in anticipo per qualsiasi consiglio.

EDIT: tutto questo è venuto da avere una SET NOCOUNT ON nel mio proc memorizzato. ATTENZIONE! Questo non è nella documentazione MSDN ovunque e davvero mi avvitata per un po '!

È stato utile?

Soluzione 2

Controlla la mia modifica;)

tutto questo è venuto da avere una SET NOCOUNT ON nel mio proc memorizzato. ATTENZIONE! Questo non è nella documentazione MSDN ovunque e davvero mi avvitata per un po '!

Altri suggerimenti

SqlDependency non è esattamente una centrale elettrica di stabilità. Qui ci sono alcuni articoli che forse può fare luce:

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top