0

我今天遇到了最严重的问题。当我将 WCF 服务部署到 live 时,它​​会NullReferenceException在尝试加入时抛出并记录 a 。加入的代码是这样的:

var myInfo = __myContext.Dates
    .Join(_myContext.Times, d => d.SomeID, t => t.SomeID, (d, t) => new { d, t })
    .Where(c => c.d.DateType == "Date of Birth")
    .ToList();

由于代码是远程运行的,我无法弄清楚什么是空的。我将它部署到 Edge 环境中进行测试,并遇到了同样的问题。作品中的扳手如下:

  • 在我的本地机器上工作正常。
  • 当我将 webconfig 设置为使用 Edge 数据库时,在我的本地计算机上工作正常。(我真的以为这会让我解决它)
  • SQL Profiler 显示了一个标准的 sql 查询连接查询(没有什么异常),它在独立运行时可以毫无问题地执行。

我完全被难住了,我正在寻找调试建议和其他任何东西一样多。除了在我的远程服务器上安装 Visual Studio,我还能做什么?

我知道有一种叫做 Intellitrace 的东西我可以使用,但是没有很好的教程解释这是否有帮助或如何让它工作(MSDN 页面很糟糕)。

在这一点上,欢迎提出任何建议。谢谢。

更多信息:

拉回某些实体时似乎出现错误,例如:

var myobjects = _context.SomeTable.ToList();可能会出错,而var myobjects = _context.SomeTable.Select(c => new { ....... }.ToList();工作正常。我仍然无法解释为什么它只会在远程服务器和本地执行此操作,即使连接到远程数据库,它也不会。

4

1 回答 1

0

我看到了类似的问题,解决方法是在调用之前简单地将 ProxyCreationEnabled 设置为 false:

 _context.Configuration.ProxyCreationEnabled = false;

 var myInfo = __myContext.Dates
    .Join(_myContext.Times, d => d.SomeID, t => t.SomeID, (d, t) => new { d, t })
    .Where(c => c.d.DateType == "Date of Birth")
    .ToList();

请注意,在我的情况下,我能够确定实际上不是查询本身引发了错误,而是在尝试通过 WCF 将结果传递给客户端时。

于 2014-03-05T21:17:37.897 回答