Domanda

che sto facendo attuazione Wicked Codice di SqlSiteMapProvider, tranne che in VB.NET.

Ci sono alcune cose con il codice che stanno causando problemi, e non capisco come dovrebbe funzionare il modo in cui è scritto nell'articolo. Ho fornito il codice direttamente dal articolo riportato di seguito. Ho incollato il codice qui per facilità di visualizzazione

Prima edizione - la di dipendenze viene creata un'istanza PRIMA (linee 134-137) viene creato l'albero (151-160) - quindi non appena si aggiunge il di dipendenze al http.cache (165-167), l'evento OnSiteMapChanged ( 242) spara immmediately - rendendo ancora una volta l'intera esecuzione proccess - e questo loop molte volte fino a quando finalmente qualcosa rende ferma. (Ho messo piede attraverso di essa e contato il codice loop almeno 20 volte prima ho rinunciato a cercare di indovinare quando ha colpito lo scorso)

OK, quindi per risolvere questo problema ho appena spostato il codice al creare la dipendenza a dopo che l'albero è costruito, a destra prima di inserire a http.cache (proprietà così HasChanged è falso quando vengono aggiunti alla http.cache, e si don' t rimanere bloccati in questa pseudo-ifinite-loop).

Ho ancora un problema però - ogni volta che viene caricata una pagina, la BuildSiteMap () Risultati e la linea 121 controlla se _root non è nullo - a quanto pare non è mai nulla dopo che è stato costruito ... questo è un bene perché ho non si vuole colpire il DB di volta in volta. Ora, inserisco un record nella tabella ... caso mai OnSiteMapChanged incendi. Come ho sfogliare le pagine sul app, il sito non riflette il record appena inserito - passo attraverso il codice, vedo che il controllo sulla linea 121 è ancora causa la funzione di corto circuito ... La mappa del sito verrà aggiornato solo se ho ri -start Visual Studio, che fa sì che il campo _root privato a diventare nulla di nuovo, e ri-costruisce la mappa del sito, che riflette i nuovi cambiamenti .. (aggiornando il browser o l'avvio di nuove istanze del browser non funziona) ...

EDIT: la questione derivava da LINEA uno stupido 'SET NOCOUNT ON' NELLA TOP DELLA MIA proc memorizzato. A quanto pare questo rompe la notifica delle query. Sembra che questa affermazione è visto come un set di risultati e che il secondo, dichiarazione query reale invalida il set di risultati con un conseguente notifica. Questo è stato molto difficile da trovare e da nessuna parte nella documentazione di MSDN fino a quando ho aggiunto il commento. Spero che questo salva qualcun altro l'avaro che ho passato!

È stato utile?

Soluzione

l'emissione derivava dalla linea uno stupido 'SET NOCOUNT ON' NELLA TOP DELLA MIA proc memorizzato. A quanto pare questo rompe la notifica delle query. Sembra che questa affermazione è visto come un set di risultati e che il secondo, dichiarazione query reale invalida il set di risultati con un conseguente notifica. Questo è stato molto difficile da trovare e da nessuna parte nella documentazione di MSDN fino a quando ho aggiunto il commento. Spero che questo salva qualcun altro l'avaro che ho passato!

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