这个Null异常怎么可能。需要帮助来解释调用堆栈

时间:2012-06-21 17:00:27

标签: c# .net wcf nullpointerexception

在我的REST WCF服务中,我记录了WCF堆栈级别(IErrorHandler

上的所有异常

这是我的代码:

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

我得到例外:

  

对象引用未设置为对象的实例。

     

在Web.Services.MobileService.PostPositions(List`1位置)
  在   C:\ CodeWorkspace \ ClientServerCode \ Web.Services \休息\ MobileService.cs:行   1170在SyncInvokePostPositions(Object,Object [],Object [])   在System.ServiceModel.Dispatcher.SyncMethodInvoker.Invoke(Object   实例,对象[]输入,对象[]&amp;输出)

我的代码中的第1170行是if (!this.ValidateRequest()) return;

这是什么意思?没有静态方法,我使用类的实例,this肯定存在。如果在ValidateRequest()内发生异常,我希望堆栈跟踪显示。

任何指针?

1 个答案:

答案 0 :(得分:1)

我愿意打赌,positions是空的,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
 }