問題タブ [intermittent]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
asp.net - 断続的な IndexOutOfRangeException は、SQL 列の欠落を示唆していますが、IIS リサイクルによって解決されています
トラフィックが多く、何年にもわたって正常に動作している ASP.NET Web サイトがありますが、SQL ストアド プロシージャに列名がないかのように、値をIndexOutOfRangeException
読み取るときに突然エラーがログに記録されるようになりました。SqlDataReader
エラー ログに記載されている URL は私にとっては問題なく機能していたので、これは嘘でした。また、1 時間ごとに数千人がアクセスすることもわかっていたページでした。それでも、エラー ログには、5 時間で 80 回しか発生していないことが示されました。
10 個のストアド プロシージャのみがエラーになっているように見えたため、すべての SQL 操作でエラーが発生することはありませんでした。ちょうど同じ 10 の繰り返し。それらのほとんどは非常に単純なものSELECT...WITH(NOLOCK)
です。
ストアド プロシージャがまだ機能していること (何年も変更されていないものもあります) を確認するために貴重な時間を無駄にし、それらが明らかに列名を正しく返していることを確認しました。DROP/CREATE
私はそれらが再コンパイルされたことを確認することさえ試みました。最終的に、別の開発者が「オフにしてから再度オンにする」ソリューションに到達し、IIS でアプリケーション プールをリサイクルしました。
これにより、問題は約 10 時間解決されましたが、再び (訪問者の約 1% で) 忍び寄り、IIS を再起動すると、さらに半日の平和が得られました。しかし、それが再び戻ってくるまでどのくらいかかりますか?
重要な場合に備えて、ログの内容を貼り付けます。
それぞれの場合のコードは、次のようなものでした。
レコードセットに存在しない列名を参照するときに発生することが予想されるエラーの種類は、 - を実行するときHttpException
に主張する少数のエラーもありました。これらの詳細とストアド プロシージャを除いて、残りの 99% の視聴者はすべて完璧に機能していました。DataBinding: 'System.Data.DataRowView' does not contain a property with the name 'PhotoLocation'
Repeater.DataBind()
<asp:Repeater>