Question

Nous avons plusieurs applications ASP.NET qui utilisent un plan du site qui est peuplé par une mise en œuvre VB.NET de l'exemple SqlSiteMapProvider trouvé à code de Wicked . Il est compilé une DLL, puis installé et référencé à partir du GAC sur les serveurs et de nos sections locales ainsi. Il a travaillé dans la production très bien pendant quelques mois. Je tiens également à noter que nous utilisons SQL Server 2008

Aujourd'hui, nous sommes arrivés et remarqué dans la production qu'il n'y avait pas d'éléments de menu affichés à tous sur le plan du site prod pour l'une des applications. Dev & QA avait l'air bien. Nous n'avons pas fait maintenence à SQL Server en prod dans un certain temps, bien avant que nous ayons jamais SQLSiteMapProvider même mis en œuvre. Nous avons également mis à jour sans aucun des applications web récemment.

La première chose que j'ai été prendre le web.config prod et le mettre à mon web.config dans mon IDE et exécuter l'application - toujours le même problème. Cela devrait exclure un problème d'IIS depuis le bogue a été reproduit aussi bien sur ma machine.

Étant donné que c'était un peu urgent, la prochaine chose que j'ai été tout simplement insérer un enregistrement fictif dans la table de plan du site en prod pour voir ce qui se passerait. Poof, comme par magie, les éléments de menu ont été restaurés et tout allait bien. Je supprimé sur l'élément de menu factice et synchronisé sans problème.

C'était un peu effrayant bien, et je suis en train de comprendre pourquoi cela est arrivé afin qu'il ne se reproduise pas à l'avenir. Quelqu'un at-il connu avant? Si vous ne l'avez jamais utilisé SqlSiteMapProvider - il utilise simplement le cache SqlDependencyCache / ASP.NET pour stocker les éléments de menu, puis si le jeu de résultats de la procédure stockée qui retourne les liens changements, il raconte ASP.NET cela est arrivé et il re-renseigne le Plan du site / cache ...

Peut-être que la connexion entre le serveur Web et SQL Server en quelque sorte est mort? Et d'insérer un disque fait « réveiller » et reconnectez à nouveau? Peut-être il y a une valeur de délai d'attente ou une sorte de IsStillConnected () fonction quelque part que je dois vérifier PageLoad pour vous assurer que la connexion est toujours en tact? Ou peut-être pensé que le ASP.NET procédure stockée revenait pas de valeurs pour une raison que nous avons inséré un enregistrement dans la table? Quelqu'un at-il vu cette question avant?

Un grand merci à l'avance pour toute orientation.

EDIT: tout cela est venu d'avoir un SET NOCOUNT dans mon proc stocké. IL FAUT SE MÉFIER! Ce n'est pas dans la documentation MSDN partout et m'a vraiment vissé pendant un certain temps!

Était-ce utile?

La solution 2

Vérifiez ma modifier;)

tout cela est venu d'avoir un SET NOCOUNT dans mon proc stocké. IL FAUT SE MÉFIER! Ce n'est pas dans la documentation MSDN partout et m'a vraiment vissé pendant un certain temps!

Autres conseils

SqlDependency est pas exactement une puissance de stabilité. Voici quelques articles qui peuvent peut-être faire la lumière:

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top