質問

私はやっています 邪悪なコード vb.netを除き、sqlsitemapproviderの実装。

コードに問題を引き起こしているコードにはいくつかのことがありますが、記事で書かれている方法でどのように機能するかがわかりません。以下の記事からコードを直接提供しました。 ここでコードを貼り付けて、見やすくしました

最初の問題 - 依存症は前にインスタンス化されます(134-137行)ツリーが作成されます(151-160) - http.cache(165-167)に依存を追加するとすぐに、onsitemapchangedイベント(242)の火災が発生します。 Immmedially -Proccess全体を再び実行する - そして、これは最終的に何かが止まるまで何度もループします。 (私はそれを介して、最後にヒットしたときに推測しようとする前に少なくとも20回ループするコードを数えました)

OK、これを修正するために、http.cacheに挿入する直前に、ツリーが構築された後に依存関係を作成するためにコードを移動しました(したがって、http.cacheに追加すると、haschangedプロパティは偽です。このpsuedo-finite-loop)。

私にはまだ問題があります - ページが読み込まれるたびに、buildSitemap()ヒット()が_rootがnullでないかどうかをチェックします - それが最初に構築された後は決してnullではないようです...これは私がそうしないので良いです毎回DBにヒットしたい。今、私はテーブルにレコードを挿入します... onsitemapChangedイベントは決して発生しません。アプリでページを閲覧すると、サイトマップは新しく挿入されたレコードを反映していません - コードを介して踏み込んでいるので、121行目のチェックがまだ短絡していることがわかります。 - プライベート_rootフィールドを再びnullにし、サイトマップを再構築して、新しい変更を反映してVisual Studioを開始します。

編集:この問題は、保存されたProcの上部にある愚かな 'Set nocount on' nocount on 'nocount' on 'nocountを設定します。どうやらこれはクエリ通知を破ります。このステートメントは結果セットと見なされており、2番目の実際のクエリステートメントが結果セットを無効にして通知をもたらすようです。これは、コメントを追加するまで、MSDNドキュメントの見つけるのが非常に困難であり、どこにもありませんでした。これが私が経験した悲惨さを他の誰かに救うことを願っています!

役に立ちましたか?

解決

この問題は、保存されたProcの上部にある愚かな「nocount on 'on' nocount」に起因します。どうやらこれはクエリ通知を破ります。このステートメントは結果セットと見なされており、2番目の実際のクエリステートメントが結果セットを無効にして通知をもたらすようです。これは、コメントを追加するまで、MSDNドキュメントの見つけるのが非常に困難であり、どこにもありませんでした。これが私が経験した悲惨さを他の誰かに救うことを願っています!

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top