【问题标题】:WebApi uncaught error when calling SaveChanges() for breezeJs为微风Js 调用 SaveChanges() 时 WebApi 未捕获错误
【发布时间】:2016-05-05 01:24:33
【问题描述】:

使用 WebAPI 和 EntityFramework 设置 Breeze。

EntityManager 查询工作正常。 SaveChanges() 在所有实体上都可以正常工作,除了...

我有一个带有可选相关实体的实体:

Public Class Payment
    Public Property Id As Integer
    Public Overridable Property Registree As Registree
    Public Property RegistreeId as Integer?
    Public Property Amount as Double
End Class

这是我对 SaveChanges() 的 WebAPI 操作

  <HttpPost()>
    Public Function SaveChanges(bundle As JObject) As SaveResult
        Dim result As SaveResult
        Try
            result = breezeDb.SaveChanges(bundle)
        Catch ex As Exception
            Dim err = ex
        End Try
        Return result
    End Function

当我在 Breeze 中创建一个新的支付实体并调用 SaveChanges 时,一切正常,除非我的支付实体的值为 RegistreeId。

如果RegistreeId 有值,会发生以下情况:

  1. WebAPI 上的 SaveChanges() 已成功调用。
  2. 我的 Try/Catch 中没有发现任何错误。
  3. 返回给客户端的“结果”没有与之相关的错误。

但是,在客户端,manager.saveChanges() 失败,给出一个没有详细信息的错误对象,只是“响应的 HTTP 状态代码为 500。”

return manager.saveChanges()
              .then(function(saveResult){
                return saveResult;
              })
              .catch(errorOnSave); //this gets called, no breakpoints get hit in the "then" function

注意:实体已正确保存到数据库、相关实体和所有实体中。所以这不是外键约束或其他数据库问题。

所以似乎服务器上出现了问题,并且没有错误消息到达客户端。但是我的 try/catch 没有得到它,并且只有当可选的外键字段不为空时才会发生错误。

有什么想法吗?

【问题讨论】:

    标签: entity-framework asp.net-web-api breeze


    【解决方案1】:

    发现问题...没有意识到我没有关闭 web.config 中的自定义错误。

    <system.web>
        <customErrors mode="Off" />
      ...
      </system.web>
    

    然后我可以看到 Json.Net 在解析 saveresult 时遇到了 null 异常错误。

    【讨论】:

    • 谢谢你,你拯救了我的一天 :) 在我关闭 customErrors 之前,我无法看到错误详细信息(像你一样)。
    猜你喜欢
    • 2017-12-17
    • 2021-05-14
    • 2016-01-29
    • 1970-01-01
    • 2014-01-29
    • 1970-01-01
    • 2021-07-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多