0

構成ファイル、またはより具体的にはそのデータ内の値のサブセットがイーサに失われる断続的な問題が発生しています。正直なところ、コード、構成、マシン、または 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 の設定であろうとコードであろうと、どこから始めればよいかについての情報が見つかりません。:)

4

1 に答える 1

1

私は何が間違っているのか考えています。
ライン

x.PriceLowerBoundValues = section.SelectNodes(...).Cast<XmlNode>().Select(...);

基本的に、XmlNodeListに対する遅延列挙子。
MSDNドキュメントから:

このメソッドによって返されるXmlNodeListオブジェクトは、基になるドキュメントが変更されていない間は有効です。基になるドキュメントが変更された場合、予期しない結果が返される可能性があります(例外はスローされません)。

その可能性はありますthe underlying document changesか?
たとえば配列に値を入れても問題はありますか?好き..Select().ToArray();

于 2012-10-29T04:14:45.727 に答える