2017-11-24 133 views
6

Nowość .NET Core..Net Core Web API

Co robię źle? Tu jest mój kontroler

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

jestem w stanie połączyć się z API z tego adresu URL

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

I hit przerwania w metodzie GET, ale Id jest zawsze zero. Nie mogę uzyskać metody odczytu wartości przekazywanej z adresu URL.

Wszelkie sugestie?

+0

Max int jest '2147483647' Twoja wartość jest zbyt duża. zmień na 'long' – Nkosi

+0

Lub użyj Guid dla Id's – Antoshjke

Odpowiedz

5

int MaxValue = 2147483647

Twoja wartość 8172858817 jest zbyt duża.

Albo użyć parametru mniejszą wartość lub zmienić 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

To działa. Jeśli zmienię nazwę metody na GetCustomerByPhone, nie trafię do punktu przerwania. Nowy adres URL, którego używam, to http: // localhost: 51375/api/customer/GetCustomerByPhone/8172858817. Jeśli używam tylko GET jako nazwy mojej metody, jestem w stanie trafić punkt przerwania. Dlaczego tak? – Coder77

+0

Musisz zaktualizować szablon trasy. '[HttpGet (" GetCustomerByPhone/{id}) "'] – Nkosi

+0

To działa! Dzięki – Coder77