1

Breezejs をバージョン 1.4.1 から 1.4.4 に更新しました。サーバー側の検証では、ContextProvider で AfterSaveEntitiesDelegate を処理し、EntityErrorsException() をスローしていました。

私が読んだリリースノートで:

検証エラーが発生した SaveChanges 操作に対する Breeze WebApi 応答は、200 ではなく 403 ステータス コードを返すようになりました。これは Breeze コードには影響しませんが、Breeze のネットワーク トラフィックを監視しているすべての人に気付かれます。

ただし、新しい 403 エラーには、検証エラーに関する詳細や、検証エラーであることを示す内部例外は含まれていません。代わりに、エラーは次のとおりです。「応答」プロパティはありません。また、クライアント側のコードはこのエラーを「理解」しなくなりました。

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);
        }

これは正しい例外を返しましたが、ステータス コードが間違っていました (更新された Breezejs クライアント コードで期待される 403 ではなく 500)。

微風で構築された応答メッセージを渡すために、新しいキャッチを追加しました。

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