3

我编写了一个 WCF Web 服务,它接受 XML 文件并将它们存储到数据库中。在“低负载”下一切正常,但在高负载下我得到了一些意想不到的行为,到目前为止我还无法确定问题到底是什么。有人有建议吗?

这是我在日志中“有时”看到的异常——比如 10 000 次中有 25 次:

Exception: System.NullReferenceException: Object reference not set to an instance of an object.
   at System.Data.Objects.ObjectStateManager.DetectConflicts(IList`1 entries)
   at System.Data.Objects.ObjectStateManager.DetectChanges()
   at System.Data.Entity.Internal.InternalContext.GetStateEntry(Object entity)
   at System.Data.Entity.DbContext.Entry(Object entity)
... rest of my stacktrace

我看到这种情况每隔一段时间就会发生一次,我目前正在研究这是否与并发有关(其他一些线程可能在同一个实体上工作)。有人可以给我一些关于在哪里寻找的指示吗?

4

1 回答 1

0

NullReferenceException 当您尝试使用值为 Nothing/null 的引用变量时发生。

当引用变量的值为 Nothing/null 时,这意味着它实际上并未持有对堆上存在的任何对象的实例的引用。

我不知道问题是什么,但我相信它与线程。由于它适用于少数用户。当负载增加时,它可能使用多个线程来提高性能。当线程异步执行时,出现此问题的可能性更大。!!

我可以提供的解决方案是自定义指定线程,并同步 Objects。可能它会解决问题。

于 2013-09-02T07:04:31.020 回答