無効な列挙型の値に整数をキャストしても、C#ではFlagsによって例外が発生しません。ここでは、DBテーブルにテーブルを指定し、その値をEntityFrameworkで1-3
にしました。私のサーバー側では、数値を0-2
からenum XyzType
にキャストします。これは明らかに無効な値(XyzType)3
を生成します。今私はこの値をXyzDTO
に入れてWCFクライアントに送信します。直列化復元時にこれは、この非常に漠然とした説明で失敗します。 無効な列挙型の値にキャストすると、クライアント側で不特定の例外が発生します
私の質問は、どのような原因が何であるかに関する有用な情報が得られなかったことです。列挙型とDB値の違いがわかるまで、このバグで最後の1.5時間を費やしました。それは有用な情報が与えられなかったWCFエラー処理の欠陥と考えられますか?その場合は、MSに通知する必要がありますか?将来このようなシナリオを避けるための良い習慣はありますか?
編集:web.configはありませんのでご注意ください。私のサーバサイドはWindowsサービス内のWCFサービスです。私はapp.configを持っています。
EDIT2:この問題に関して何か誤解があり、何が挑戦されたかのようです。デバッガでCommunicationExceptionのInnerExceptionsを調べると、有用な情報がまったく提供されません。また、私はすでに "includeExceptionDetailsInFaults" = serversideにtrueを設定していますが、例外はserversideによってスローされません!これはクライアントサイドでの直列化解除時に発生します。
EDIT3:クライアント側でトレースを有効にすることを提案している回答があります。私は今これを試みましたが、確かにこの問題については有益な情報を提供していません。 Hereは出力へのリンクです。
あなたは、さらにあなたの 'XyzType'-列挙型を表示することができますか? – khlr
私は値x、y、z(0,1,2)だけを除外しました。 – LuqJensen
enumを 'x = 1、y = 2、z = 3'から' x = 0、y = 1、z = 2'(あなたのDBに合わせる)に変更すると、 (まだ更新されていない)クライアントが例外をスローする理由かもしれません。 – khlr