Breeze 乐观并发例外

Breeze 乐观并发例外,breeze,Breeze,乐观并发异常没有正确返回。我用breeze ToDo示例和我的应用程序对此进行了测试 这是如果我引发乐观并发异常时返回的结果: {"$id":"1","$type":"System.Web.Http.HttpError, System.Web.Http","Message":"An error has occurred."} 缺少ExceptionType。在VS的调试模式下,这是正确的。Hm…,当我在测试用例中尝试并发异常时 // assuming this causes a concurr

乐观并发异常没有正确返回。我用breeze ToDo示例和我的应用程序对此进行了测试

这是如果我引发乐观并发异常时返回的结果:

{"$id":"1","$type":"System.Web.Http.HttpError, System.Web.Http","Message":"An error has occurred."}

缺少ExceptionType。在VS的调试模式下,这是正确的。

Hm…,当我在测试用例中尝试并发异常时

// assuming this causes a concurrency exception
em.saveChanges().then(

).fail(function(error) {
   // error object detailed below        
})
我得到以下返回的带有'error'参数

error.message: "Store update, insert, or delete statement affected an unexpected number of rows (0). Entities may have been modified or deleted since entities were loaded. Refresh ObjectStateManager entries."

error.responseText:    {"$id":"1","$type":"System.Web.Http.HttpError, System.Web.Http","Message":"An error has occurred.","ExceptionMessage":"Store update, insert, or delete statement affected an unexpected number of rows (0). Entities may have been modified or deleted since entities were loaded. Refresh ObjectStateManager entries.","ExceptionType":"System.Data.OptimisticConcurrencyException","StackTrace":"   at System.Data.Mapping.Update.Internal.UpdateTranslator.ValidateRowsAffected(Int64 <... more here ...> }

error.detail:  < an even more detailed error object
error.detail.ExceptionType: "System.Data.OptimisticConcurrencyException"
error.message:“存储更新、插入或删除语句影响了意外的行数(0)。自加载实体后,实体可能已被修改或删除。请刷新ObjectStateManager条目。”
error.responseText:{“$id”:“1”,“$type”:“System.Web.Http.HttpError,System.Web.Http”,“消息”:“发生错误”,“ExceptionMessage”:“存储更新、插入或删除语句影响了意外数量的行(0)。自加载实体后,实体可能已被修改或删除。刷新ObjectStateManager条目。”,“ExceptionType”:“System.Data.OptimisticConcurrencyException”,“StackTrace:”位于System.Data.Mapping.Update.Internal.UpdateTranslator.ValidateRowsInfected(Int64}
error.detail:<更详细的错误对象
error.detail.Exception类型:“System.Data.OptimisticConcurrencyException”
还有其他属性,但这些是重要的属性


我想知道我们的做法有什么不同?

@sascha-你在
这件事上胜过了我,如果你在IIS中运行,这件事很好(看看你是否是少数几个会自行托管Web Api的人之一)

但我很确定最终这样做是错误的。这是权宜之计,但正如Jimmy在他的帖子中所说,“这可能不是我们在生产中想要的东西。”应用程序不应该向客户端公开未经过滤的异常,比如乐观并发性或验证错误之类的常规内容

我打算找到一种更好的方法,很可能涉及到。我将重点考虑使用“自定义异常过滤器”以受控方式处理未处理的异常

我不认为这种方法属于Breeze本身。我觉得它需要一个特定于应用程序的解决方案……一个知道应该暴露哪些异常以及它们应该如何措辞的解决方案。但是这种机制很适合教授。一旦你知道如何做,你就可以使用自己的自定义异常处理……以及不要使用Web.config


希望很快能写下这篇指南。请随意告诉我:)

Jay可能会在我们的上午讨论这个问题。没有承诺……但我们会尝试这个问题,因为?似乎是w/r/t在发布模式和调试模式下得到的不同错误报告。我打赌我们需要调整服务器配置和/或截获并重新打包并发异常,以便在客户端上更轻松地使用。N通常我不想再发布任何问题,但我必须在几天内完成此部分。感谢您反应如此之快。我进行了更多测试,并在Google上搜索了更多。我发现web.config的此条目刚刚解决了问题:。刚刚看到了您关于的评论。很好!我们将更新文档以解决此问题。