Pregunta

Me estoy haciendo la Código traviesa implementación de SqlSiteMapProvider, excepto en VB.NET.

Hay algunas cosas con el código que están causando problemas, y yo no entienden cómo se supone que funciona la forma en que está escrito en el artículo. He proporcionado el código directamente desde el artículo a continuación. He pegado el código aquí para facilitar la visualización de

En primer tema - la depedency se crea una instancia anterior (líneas 134-137) se crea el árbol (151-160) - por lo que tan pronto como se agrega el depedency a la http.cache (165-167), el evento OnSiteMapChanged ( 242) dispara immmediately - hacer todo el recorrido proccess de nuevo - y esto bucles muchas veces hasta que por fin algo hace que se detenga. (Que entramos a través de él y conté el código de bucle al menos 20 veces antes de que me di por vencido en tratar de adivinar cuando llegó a la última)

OK, así que para solucionar este problema me acabo de mudar el código para la creación de la dependencia a la vez que el árbol está construido, justo antes de insertar a http.cache (propiedad así HasChanged es falsa cuando se añade a http.cache, y usted don' t se atascan en este pseudo-ifinite-loop).

Todavía tengo un problema, aunque - cada vez que se carga una página, el BuildSiteMap () hits y línea 121 comprueba si _root no es nulo - parece que nunca es nula después de que se construyó primero ... esto es bueno porque no quieren golpear la base de datos cada vez. Ahora, inserto un registro en la tabla ... el evento OnSiteMapChanged nunca se disparará. Como hojeo las páginas de la aplicación, el mapa no refleja el registro recién insertado - paso a paso por el código, veo que el cheque en la línea 121 todavía está causando la función de cortocircuito ... El mapa del sitio sólo se actualizará si i re -start Visual Studio, que hace que el campo _root privada se convierta en nulo de nuevo, y re-construye el mapa del sitio, lo que refleja los nuevos cambios .. (refrescar el navegador o la creación de nuevas instancias del navegador no funciona) ...

EDIT: EL PROBLEMA provino de la línea A TONTA 'SET NOCOUNT ON' EN LA PARTE SUPERIOR DE MI procedimiento almacenado. Al parecer, esto rompe el notificación de consulta. Parece que esta afirmación es visto como un conjunto de resultados y que la segunda declaración, consulta real invalida el conjunto de resultados que resulta en una notificación. Esto fue muy difícil de encontrar y en ninguna parte de la documentación de MSDN hasta que he añadido el comentario. Espero que esto ahorra a otra persona el avaro que pasé!

¿Fue útil?

Solución

EL PROBLEMA tallo de la línea A SILLY 'SET NOCOUNT ON' en el parte superior de mi procedimiento almacenado. Al parecer, esto rompe el notificación de consulta. Parece que esta afirmación es visto como un conjunto de resultados y que la segunda declaración, consulta real invalida el conjunto de resultados que resulta en una notificación. Esto fue muy difícil de encontrar y en ninguna parte de la documentación de MSDN hasta que he añadido el comentario. Espero que esto ahorra a otra persona el avaro que pasé!

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top