構成ファイル、またはより具体的にはそのデータ内の値のサブセットがイーサに失われる断続的な問題が発生しています。正直なところ、コード、構成、マシン、または IIS の問題であるかどうかわからないため、アプローチ方法について途方に暮れています。何が起こっているかのアイデアを与えるために....
私たちがしていること
「価格」ドロップダウン値を含む構成ファイルがあります。
<searchForm>
<priceLowerBoundValues>
<priceLowerBoundValue>2500</priceLowerBoundValue>
<priceLowerBoundValue>5000</priceLowerBoundValue>
....
</priceLowerBoundValues>
....
</searchForm>
これらは、searchForm.config という名前のファイルに含まれています。web.config では、このように外部ファイルとして参照されます。
<searchForm configSource="Config\searchForm.config" />
IConfigurationSectionHandler から継承するカスタム構成ハンドラーがあります。値を取得するこのコードの要点。
var priceLowerBoundValueXPath = "/searchForm/priceLowerBoundValues/priceLowerBoundValue/text()";
searchFormLookups.PriceLowerBoundValues = section.SelectNodes(priceLowerBoundValueXPath).Cast<XmlNode>().Select(x => int.Parse(x.Value));
次に、それを参照する唯一の場所は、ビューモデルの選択リストを作成するときです。次のようになります。
SearchFormConfiguration.PriceLowerBoundValues.ToSelectList((parameters.PriceLowerBound != null) ? parameters.PriceLowerBound.Value : 0)
これまでリストに変更が加えられたことはなく、リシャーパーの「Find Usages」を使用すると、この単一の呼び出しのみが表示されます。プログラムの他のポイントは、これらの値に触れていません。
問題
断続的に発生するのは、Web ページのドロップダウン ボックスの値が 1 つだけになることです (たとえば、価格ボックスに 2500 など)。完全に空ではないことに注意してください。ただし、通常はほとんどの値がなくなっています。外部構成が (ほぼ完全に) ドロップされるという同様の問題があり、場所全体で null 参照エラーが発生します。たとえば、そこにあるはずの構成をまだ探していますが、地球の表面から一掃されました。
Web サイトを停止し、アプリ プールを停止してから、すべてを再度起動すると、問題が修正されます。そのため、最初はメモリ使用量に問題がある可能性があり、最初に削除されるのは外部構成であると考えましたが、現時点では本当に確信が持てません.
注意すべきもう一つのこと。毎日早朝にアプリ プールを再起動します。
正しい方向への微調整であっても、これに関するヘルプは大歓迎です。私が言うように、IIS の設定であろうとコードであろうと、どこから始めればよいかについての情報が見つかりません。:)