実稼働環境から受け取ったエラーについて、私は完全に当惑しています。
mscorlib: 同じキーを持つアイテムが既に追加されています。
スタックトレース付き
System.Collections.Generic.Dictionary`2.Insert (TKey キー、TValue 値、ブール値の追加) で
Domain.MyClass.CompleteReasons で (辞書の 2 つの理由)
Domain.MyClass.ctor(...) で
at ... (呼び出しメソッドのツリー)
MySite.MyPage.Page_Load (オブジェクトの送信者、EventArgs e) で
System.Web.UI.Control.LoadRecursive() で
System.Web.UI.Page.ProcessRequestMain で (ブール値 includeStagesBeforeAsyncPoint、ブール値 includeStagesAfterAsyncPoint)
それについては何も珍しいことではありませんが、そのCompleteReasons
方法を見ると:
Private Function CompleteReasons(ByVal reasons As Dictionary(Of MyReasonsEnum, String)) As Dictionary(Of MyReasonsEnum, String)
If reasons Is Nothing Then
reasons = New Dictionary(Of MyReasonsEnum, String)()
End If
For Each reason As MyReasonsEnum In System.Enum.GetValues(GetType(MyReasonsEnum))
If Not reasons.ContainsKey(reason) Then
reasons.Add(reason, ReasonToString(reason))
End If
Next
Return reasons
End Function
ディクショナリ アイテムが追加される唯一の場所がキー チェック内であることがわかります。
これは本番環境でのみ見られ、本番システムでも自分のデバッグ環境でも問題を引き起こすことができませんでした。
運用サーバーは、IIS 8.5 を実行する Windows Server 2012 R2 です。
これが私が持っているすべての情報であるため、これが発生しないようにする方法や、原因に関する詳細情報をどこで見つけることができるかについて、誰かアイデアがあれば教えてください。