Breeze で、コントローラでメタデータ アクションを呼び出そうとすると、504 エラーで失敗するという問題が発生しました。
おおよその呼び出しは //servername/breeze/controller/metadata です
環境
負荷分散された Win 2k8 Azure Virtual Machines で IIS7 を介して実行される Web API
バージョン (NuGet 経由でインストール) Breeze Client 1.4.2 Breeze Client and Server 1.4.2 Breeze Server - for ASP.NET Web Api (Core) 1.4.2 Breeze Server - for ASP.NET Web Api and Entity Framework 1.4.2
更新: Breeze 1.4.5 にアップグレードしても違いはありません
以前は正常に機能していましたが、最近の唯一の変更は負荷分散の導入です。
注目すべきは、複数のコントローラーがあり、それぞれに独自のメタデータがあることです。
うまくいくケース
- ローカルホスト経由で実行しています。
- [BreezeController] 属性をコントローラーから削除する
- メタデータ関数の名前変更
失敗するケース
- 展開時
文字列を返す簡単なテストを実行する場合、例えば:
[HttpGet] public string Metadata() { return "This was a test"; }
何らかの理由で、Breeze はコントローラーのメタデータ機能を気に入らないようです。
アップデート:
負荷分散されていないエンドポイントを使用してポート 8080 で直接実行するように設定しようとしたところ、同じ問題が発生したため、負荷分散されたエンドポイントの使用に特に関連しているようには見えません。
要求は IIS ログに表示されますが、IIS の失敗した要求トレースは、失敗した要求について何もログに記録していないようです。