2017-06-06 2 views
0

Ich bin ein ASP.NET Core-Projekt erstellen, die Brisejs und Typoskript verwendet. Die mysteriöse Sache ist, dass wenn ich Daten ohne ein Prädikat laden, alle Dinge gut funktionieren, aber wenn ein Prädikat hinzugefügt wird, um die Daten zu filtern, gibt es einen Fehler: "500 Interner Serverfehler". Ich habe versucht, im Controller zu debuggen, wenn der Browser die Anfrage stellt, kann es an den Controller gelangen.Breeze funktioniert nicht mit Vorhersage in Aspnetcore-Projekt

Aber auf der js-Seite hat die Anfrage keine Rückgabe, was bedeutet, dass der js-Code den Haltepunkt nicht durchlaufen kann.

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

Die 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(); 

    } 

Die Anfrage:

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

Was ist die Anforderungs-URL aussehen wie auf den Server gehen? Können Sie auf dem Server einen Haltepunkt setzen, um zu sehen, was dort vor sich geht? –

+0

Ich habe einen Haltepunkt in der Steuerung hinzugefügt, es gab alle Daten (wie kein Prädikat) und keine Fehler zurück. Ich rate das [BreezeQueryFilter] -Attribut, aber habe keine Hinweise für den Moment. – even

Antwort

1

den Grund gefunden. Der breeze.core (Server-Ende) erlaubt nur das Prädikat json-Format, aber der Standard im Brise-Front-End ist nicht.

die Lösung ist:

breeze.config.initializeAdapterInstance("uriBuilder", "json");