2017-06-06 7 views
0

breezejsとtypescriptを使用するASP.NETコアプロジェクトをビルドします。不思議なことは、述語なしでデータをロードすると、すべて正常に動作しますが、データをフィルタ処理するために述語が追加されると、 '500 Internal Server Error'というエラーが発生するということです。私はコントローラでデバッグしようとしましたが、ブラウザが要求をするとコントローラに到達できます。aspnetcoreプロジェクトでBreezeが予測できない

しかし、js側では、要求には戻り値がありません。つまり、jsコードはブレークポイントを通過できません。

executeQuery(query) { 
    return this.manager 
     .executeQuery(query.using(breeze.FetchStrategy.FromServer || this.fetchStrategy)) 
     .then(function (data) { 
      return data.results;//my breakpoint 
     }); 
} 

contorller:

using System.Linq; 
using Microsoft.AspNetCore.Mvc; 
using Jumpstart.Web.Data; 
using Microsoft.AspNetCore.Authorization; 
using Jumpstart.Model; 
using Breeze.AspNetCore; 
using Newtonsoft.Json.Linq; 
using Breeze.Persistence; 

namespace Jumpstart.Web.Controllers 
{ 
[Produces("application/json")] 
[Route("breeze/[controller]/[action]")] 
[BreezeQueryFilter] 
public class JumpstartController : Controller 
{ 
    private readonly IUnitOfWork _uitOfWork; 

    public JumpstartController(IUnitOfWork uitOfWork) 
    { 
     _uitOfWork = uitOfWork; 
    } 

    /// <summary> 
    /// Get public tenants 
    /// </summary> 
    /// <returns>IQueryable tenants</returns> 
    [HttpGet] 
    [AllowAnonymous] 
    public IQueryable<Tenant> Tenants() 
    { 
     return _uitOfWork.TenantRepository.All(); 

    } 

要求は:

Request URL:http://localhost:50481/breeze/Jumpstart/tenants?$filter=Id%20eq%20guid%2709ae9363-240a-46d7-b5a6-30529e7dee63%27& 
Request Method:GET 
Status Code:500 Internal Server Error 
+0

リクエストURLは、サーバーに行くように何を求めていますか?サーバー上でブレークポイントを設定して、何が起こっているのか確認できますか? –

+0

コントローラにブレークポイントを追加し、すべてのデータを返しました(述語なしと同じです)。エラーはありません。私は[BreezeQueryFilter]属性を推測していますが、現時点では手がかりはありません。 – even

答えて

1

理由を発見しました。 breeze.core(サーバー側)はjson形式の述部のみを許可しますが、breezeフロントエンドのデフォルトはありません。

解決策は以下のとおりです。

breeze.config.initializeAdapterInstance("uriBuilder", "json"); 
関連する問題