"对象参考未设置"对于.NET Web API端点

时间:2017-09-26 17:50:03

标签: c# json entity-framework asp.net-web-api

我有一个web api项目,它有一个端点来接收来自第三方的事件。

    [HttpPost]
    public async Task<IHttpActionResult> Event(Event newEvent)
    {
        Logger.Info($"Received {newEvent.eventType}, href: {newEvent.body.href}");

        if (newEvent.eventType.CanProcess())
        {
            await _eventProcessor.ProcessEvent(newEvent);
        }

        return Ok();
    }

如您所见,非常简单的控制器。该项目实现了Entity Framework,它在您看到的处理器中处理。我的问题是,一些事件正在发出以下错误

  

11:39:08.968 2017-09-25 [16]错误 - 对象引用未设置为对象的实例。   System.NullReferenceException:未将对象引用设置为对象的实例。      在eventApi.Controllers.EventController.d__2.MoveNext()的d:\ a \ 1 \ s \ EventApi \ EventApi \ Controllers \ EventController.cs:第22行

当我从第三方请求事件并从中获取JSON时,我可以通过我的端点发送它就好了。 stacktrace是第22行,它是Logger.Info语句。 eventType和body.href(在日志记录语句中)可以为空,我已经测试了它,它只记录一个空字符串。日志记录语句失败的唯一方法是&#34; body&#34;不存在,在这种情况下,它调用嵌套属性(href)并将抛出错误。但是在他们手动发送给我的事件中(通过电子邮件),他们确实包含了一个正文。

它是否会在反序列化时抛出错误,即使stacktrace说第22行?数百个事件正在顺利进行,到目前为止只有~3个事件引发了这个错误。这个控制器实现了异步操作,所以我不认为它会出现某种过载问题。

因为我可以在他们给我JSON后发送这些事件,我认为这是他们的问题。但是当我为你反序列化JSON时,我不确定这是否是web-api项目中常见的问题/错误。如果需要额外的日志记录,我可以尝试在反序列化JSON之前/期间记录任何内容,但到目前为止我还没有找到如何在线执行此操作。

0 个答案:

没有答案
相关问题