在我的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()
内发生异常,我希望堆栈跟踪显示。
任何指针?
答案 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
}