2015-05-21 24 views
5

Tôi có một BreezeController trong một dự án WebAPI 2:Lỗi trong khi thực hiện cuộc gọi http: truy vấn Metadata thất bại cho:

[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; 
    } 
} 

ứng dụng Khách hàng của tôi có mã này cho tiêu thụ dữ liệu:

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); 
} 

Khi Tôi chạy ứng dụng của mình - đó là một ứng dụng dành cho thiết bị di động và nó mở ra trong Ripple - Tôi có thể gỡ lỗi vào javascript. Nó chạy vào phương thức _queryFailed và tôi nhận được thông báo lỗi này:

Truy vấn siêu dữ liệu không thành công cho: http://localhost:24830/breeze/breeze/Metadata; undefined

Máy chủ cũng đang chạy trong trình gỡ lỗi. Nó không đạt đến điểm ngắt trong phương thức Metadata(). Nhưng nếu tôi đặt đường dẫn vào trình duyệt, nó sẽ trả về MetaData.

Tôi có thể làm gì bây giờ để điều tra sự cố?

EDIT Tôi đã thử một điều gì đó khác. Tôi đã mở các dự án riêng lẻ trong các trường hợp riêng biệt của Visual Studio (Tôi đang sử dụng VS 2015 RC). Bây giờ tôi nhấn breakpoint trên máy chủ và máy khách của tôi đi vào hàm querySucceeded. Vì vậy, thành công của một loại. Vì vậy, câu hỏi thay đổi. Có cách nào để thiết lập môi trường của tôi để làm việc chỉ trong một trường hợp của Visual Studio?

Trả lời

1

Bạn đã cố gắng tìm nạp siêu dữ liệu theo cách thủ công chưa?

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. 
    }); 
} 

nguồn: breeze fetch meta data if not present

Các vấn đề liên quan