Breeze 乐观并发例外
乐观并发异常没有正确返回。我用breeze ToDo示例和我的应用程序对此进行了测试 这是如果我引发乐观并发异常时返回的结果: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
{"$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的此条目刚刚解决了问题:。刚刚看到了您关于的评论。很好!我们将更新文档以解决此问题。