2017-06-06 54 views
0

我正在构建一个使用breezejs和typescript的ASP.NET Core项目。神秘的是,当我加载没有谓词的数据时,所有的东西都可以正常工作,但是当添加谓词以过滤数据时,会出现一个错误:'500内部服务器错误'。我试图在控制器中进行调试,当浏览器发出请求时,它可以进入控制器。Breeze不能在aspnetcore项目中使用预测

但是,在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.config.initializeAdapterInstance("uriBuilder", "json");