1

我已经从 1.4.1 版本更新到 1.4.4。对于服务器端验证,我正在处理 ContextProvider 上的 AfterSaveEntitiesDelegate 并抛出 EntityErrorsException()。

在发行说明中,我读到:

Breeze WebApi 对任何存在验证错误的 SaveChanges 操作的响应现在返回 403 状态代码,而不是 200。这对任何 Breeze 代码都没有影响,但任何观看 Breeze 网络流量的人都会注意到这一点。

但是,新的 403 错误没有任何有关验证错误的详细信息或任何表明它是验证错误的内部异常。相反,错误是:“处理 HTTP 请求导致异常。有关详细信息,请参阅此异常的 'Response' 属性返回的 HTTP 响应。” 没有“响应”属性。另外,现在我的客户端代码不再“理解”这个错误。

4

1 回答 1

2

事实证明,这个异常并不打算被捕获并包装到 HttpResponseMessage 中。我的 BreezeController SaveChanges() api 代码是:

try
        {
            return Request.CreateResponse(HttpStatusCode.OK, _commDataService.SaveChanges(pSaveData, shouldValidate));
        }
        catch (Exception ex)
        {
            return Request.CreateErrorResponse(HttpStatusCode.InternalServerError, ex);
        }

这返回了正确的异常,但状态代码错误(500 而不是 403,正如更新后的轻量级客户端代码所期望的那样。

我添加了一个新的捕获来传递微风构造的响应消息:

            catch (System.Web.Http.HttpResponseException responseException)
        {
            //todo: logger call.
            return responseException.Response;
        }
于 2013-10-24T15:29:08.150 回答