2

私の REST WCF サービスでは、WCF スタック レベルですべての例外をログに記録します ( IErrorHandler)

これが私のコードです:

public void PostPositions(List<Position> positions)
{
    if (!this.ValidateRequest()) return;
    foreach (var position in positions)
    {

例外が発生します:

オブジェクト参照がオブジェクト インスタンスに設定されていません。

System
. ServiceModel.Dispatcher.SyncMethodInvoker.Invoke(オブジェクト インスタンス、オブジェクト[] 入力、オブジェクト[]& 出力)

私のコードの1170行目はif (!this.ValidateRequest()) return;

どういう意味ですか?静的メソッドはありません。クラスのインスタンスを操作し、this確実に存在します。内部で例外が発生した場合ValidateRequest()は、スタック トレースでそれが示されることを期待しています。

ポインタはありますか?

4

1 に答える 1

1

それがpositionsnullであり、それがポジションforeach(var position in positions)を呼び出すときに例外をスローしていると確信しています。GetEnumerator()

if(positions != null)
{
    foreach(var position in positions)
    {
        ...
    }
}

foreachお察しのとおり、ループは次のようなものの構文糖衣にすぎないため、ここで行番号の計算が少し混乱するのは非常に簡単です。

IEnumerator<Position> enumerator = positions.GetEnumerator();

try
{
    Position position;

    while(enumerator.MoveNext())
    {
        position = enumerator.Current;

        //The code from the body of your foreach loop goes here
    }
 }
 finally
 {
     //Clean up the enumerator
 }
于 2012-06-21T18:43:26.440 に答える