проблема в запросе httpdelete asp.net ядро 2

#asp.net-core-2.2

#asp.net-core-2.2

Вопрос:

Здравствуйте, я работаю над asp.net веб-api ядра 2.2, мой запрос get работает нормально, но у меня возникла проблема с запросом HTTPDELETE, мой код для запроса на удаление выглядит следующим образом

  [Route("api/[controller]")]
[ApiController]
public class PatientController : ControllerBase
{
    IPatientManager _patientManager;
    IEnumerable<Patient> patientList;

    public PatientController(IPatientManager patientManager)
    {
        _patientManager = patientManager;
    }

    [HttpGet]
    public IEnumerable<Patient> Get()
    {
        return (patientList = _patientManager.GetAllPatients());
    }


    // DELETE api/values/5
    [HttpDelete("api/Patient/{id}")]
    public bool Delete(long id)
    {
        if (_patientManager.DeletePatient(id))
            return true;
        else
            return false;

    }
}
  

}

когда я помещаю запрос в URL как localhost: 3, n922 / api / Patient / 444373, он выдает HTTP ОШИБКУ 404, мой файл startup.cs использует приведенный ниже код для MapRoute

  app.UseMvc(opt =>
            {
                opt.MapRoute("Default",
                    "{controller=Patient}/{action=Get}/{id?}");
            });
  

чтобы запустить мой PatientController вместо ValuesController, пожалуйста, помогите, в чем проблема, когда я делаю неправильно? TIA

Ответ №1:

У вас есть префикс маршрута, определенный на вашем контроллере как api/[controller] , что переводится как /api/Patient . Затем ваш маршрут для вашего действия определяется как api/Patient/{id} , что составляет весь маршрут к этому действию: /api/Patient/api/Patient/{id} . Это, очевидно, неправильно и является источником вашего 404. Измените маршрут на просто {id} .

 [HttpDelete("{id}")]
public bool Delete(long id)
  

Комментарии:

1. Извините, но у меня это тоже не работает, когда я отправляю запрос как / api / patient / 5, он выдает ошибку 405: (в браузере