0

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 の失敗した要求トレースは、失敗した要求について何もログに記録していないようです。

4

1 に答える 1

1

0.72 から 1.41 に更新し、ルートを api/{controller}/{action} からそよ風/{controller}/{action} に変更した後、同じ問題が発生しました。ブリーズの人々からの回答が得られなかったので、質問を取り下げました。

ただし、問題は権限にあると思います。VS の Localhost:50033 は私として実行され、私は SQL Server アカウントを持っているので、クールだと思います。ローカル IIS とテスト サーバー IIS に展開した後、500 エラーが発生しました。

私は最終的にjqueryコードに入り込み、jqXHRから、エラーはSQLが匿名ユーザーの資格情報を処理していないことであると判断しました。ドー!あるとしたらその瞬間。web.config で接続文字列を変更しました。

<!--<add name="PilotPlant" connectionString="Data Source=dataweb;Database=PilotPlant;Integrated Security=SSPI;" providerName="System.Data.SqlClient" />-->

<add name="PilotPlant" connectionString="Data Source=dataweb;Database=PilotPlant;Trusted_Connection=no;User Id=sa;Password=sapassword" providerName="System.Data.SqlClient"/>

これは安全性が低くなりますが、ファイアウォールの内側で実行しているため、問題にはなりません。

したがって、私の答えは、クラスターに対するアクセス許可を確認することです。これが役立つことを願っています。

于 2013-11-11T18:57:17.463 に答える