2013-10-24 6 views
1

Я обновил breezejs с версии 1.4.1 до 1.4.4. Для проверки на стороне сервера я обрабатывал AfterSaveEntitiesDelegate на ContextProvider и выбрасывал EntityErrorsException().BreezeJS - проверка сервера изменена в версии 1.4.4

В примечаниях к выпуску я прочитал:

Ответ Breeze WebAPI любой операции SaveChanges, которая имеет ошибки проверки в настоящее время возвращает код 403 состояния, вместо 200. Это не имеет никакого эффекта на любой Breeze код, но будет заметен для всех , наблюдая за сетевым трафиком Бриз.

Однако в новой ошибке 403 нет никаких сведений об ошибке проверки или любых внутренних исключениях, которые указывают на то, что это ошибка проверки. Вместо этого возникает ошибка: «Обработка HTTP-запроса привела к исключению. Подробнее см. Ответ HTTP, возвращенный свойством« Ответ »этого исключения». Не существует свойства «Ответ». Кроме того, теперь мой клиентский код больше не «понимает» эту ошибку.

ответ

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, как ожидается, обновленным breezejs клиентского кода

Я добавил. новый улов для прохождения по конвейерному ответному сообщению:

  catch (System.Web.Http.HttpResponseException responseException) 
     { 
      //todo: logger call. 
      return responseException.Response; 
     } 
Смежные вопросы