2015-05-21 18 views
5

Ho un BreezeController in un progetto WebAPI 2:Errore durante la fabbricazione della chiamata http: interrogazione dei metadati non riuscito per:

[BreezeController] 
public class BreezeController : ApiController 
{ 
    private readonly IBreezeRepository _repo; 

    public BreezeController(IBreezeRepository repo) 
    { 
     _repo = repo; 
    } 

    [HttpGet] 
    public string Metadata() 
    { 
     return _repo.MetaData; 
    } 

    [HttpGet] 
    public IQueryable<Property> Properties() 
    { 
     return _repo.Properties; 
    } 
} 

Il mio cliente applicazione ha questo codice per consumare i dati:

var mgr = new breeze.EntityManager({ 
    serviceName: "http://localhost:24830/breeze/breeze/" 
}); 

EntityQuery 
    .from('Properties') 
    .select('ID') 
    .using(mgr) 
    .execute() 
    .then(querySucceeded, _queryFailed); 

function querySucceeded(data) { 
    return data.results; 
} 

function _queryFailed(error) { 
    alert("Error while making http call: " + error.message); 
} 

Quando Corro la mia app - è un'app mobile e si apre in Ripple - posso eseguire il debug in javascript. Viene eseguito nel metodo _queryFailed e viene visualizzato questo messaggio di errore:

Query dei metadati non riuscita per: http://localhost:24830/breeze/breeze/Metadata; non definito

Anche il server è in esecuzione nel debugger. Non ha colpito il punto di interruzione nel metodo Metadata(). Ma lo fa se inserisco il percorso in un browser e restituisce il MetaData.

Cosa posso fare ora per indagare il problema?

EDIT Ho provato qualcosa di diverso. Ho aperto i singoli progetti in istanze separate di Visual Studio (sto usando VS 2015 RC). Ora colpisco il breakpoint sul server e il mio client entra nella funzione querySucceeded. Quindi successo di un tipo. Quindi la domanda cambia. C'è un modo per configurare il mio ambiente in modo che funzioni in una sola istanza di Visual Studio?

risposta

1

Hai provato a recuperare manualmente i metadati?

function fetchMetadata() { 
    var manager = new breeze.EntityManager("api/breeze"); 
    if (manager.metadataStore.isEmpty()) { 
     return manager.fetchMetadata(); 
    } 

    return Q.resolve(); 
} 

function start() { 
    fetchMetadata().then(function() { 
     // Metadata fetched. 
     // Do something here. 
    }); 
} 

fonte: breeze fetch meta data if not present