2017-11-24 43 views
6

Mới với .NET Core.. Net Core Web API

Tôi đang làm gì sai? Dưới đây là bộ điều khiển của tôi

[Route("api/[controller]")] 
public class customerController : Controller 
{ 
    // GET: api/values 
    //[HttpGet] 
    //public IEnumerable<string> Get() 
    //{ 
    // return new string[] { "value1", "value2" }; 
    //} 

    // GET api/values/5 
    [HttpGet("{id}")] 
    public customer Get(int id) 
    { 
     var repo = new customerRepository(); 
     return repo.GetCustomerOnPhone(id); 
    } 
} 

tôi có thể gọi API với URL này

http://localhost:51375/api/customer/8172858817

tôi nhấn breakpoint trong phương thức GET, nhưng Id luôn là zero. Tôi không thể có được phương pháp để đọc giá trị đang được chuyển từ URL.

Mọi đề xuất?

+0

Max int là '2147483647' giá trị của bạn là quá lớn. thay đổi thành 'long' – Nkosi

+0

Hoặc sử dụng Hướng dẫn cho Id – Antoshjke

Trả lời

5

int MaxValue = 2147483647

giá trị của bạn 8172858817 là quá lớn.

Hoặc sử dụng một giá trị hoặc thay đổi thông số nhỏ hơn để long

[HttpGet("{id:long}")] 
public IActionResult Get(long id) { 
    var repo = new customerRepository(); 
    customer model = repo.GetCustomerOnPhone(id); 
    return Ok(model); 
} 

Reference Routing in ASP.NET Core : Route Constraint Reference

+0

Tác phẩm này hoạt động. Nếu tôi thay đổi tên phương thức thành GetCustomerByPhone, tôi không nhấn breakpoint. URL mới tôi đang sử dụng là http: // localhost: 51375/api/customer/GetCustomerByPhone/8172858817. Nếu tôi chỉ sử dụng GET làm tên phương thức của mình, tôi có thể nhấn điểm ngắt. Tại sao như vậy? – Coder77

+0

Bạn cần cập nhật mẫu tuyến đường. '[HttpGet (" GetCustomerByPhone/{id}) "'] – Nkosi

+0

Điều đó có hiệu quả! Cảm ơn – Coder77

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