Удалить способ действия веб-API не было вызвано.
У меня есть контроллер web api в моем проекте MVC следующим образом
public class EmployeeController : ApiController { static readonly IEmployeeRepository repository = new EmployeeRepository(); // GET api/<controller> [HttpGet] public object Get() { var queryString = HttpContext.Current.Request.QueryString; var data = repository.GetAll().ToList(); return new { Items = data, Count = data.Count() }; } public Employee GetEmployee(int id) { Employee emp = repository.Get(id); if (emp == null) { throw new HttpResponseException(HttpStatusCode.NotFound); } return emp; } // POST api/<controller> public HttpResponseMessage PostEmployee(Employee emp) { emp = repository.Add(emp); var response = Request.CreateResponse<Employee>(HttpStatusCode.Created, emp); string uri = Url.Link("Employee", new { id = emp.EmployeeID }); response.Headers.Location = new Uri(uri); return response; } [HttpPut] // PUT api/<controller> public void PutEmployee(Employee emp) { if (!repository.Update(emp)) { throw new HttpResponseException(HttpStatusCode.NotFound); } } [HttpDelete] public void Delete(int id) { Employee emp = repository.Get(id); if (emp == null) { throw new HttpResponseException(HttpStatusCode.NotFound); } repository.Remove(id); } }
Для меня добавить(поставить), получения (GET) и обновление (Post) способ получения срабатывает
Но метод Delete не срабатывает
И мой URL-адрес метода удаления :
http://localhost:63187/api/Employee/2
и мой Webapicongif. cs
public static void Register(HttpConfiguration config) { config.MapHttpAttributeRoutes(); config.Routes.MapHttpRoute( name: "Employee", routeTemplate: "api/{controller}/{id}", defaults: new { id = RouteParameter.Optional } ); //config.EnableQuerySupport(); }
и глобальный файл. cs выглядит следующим образом
protected void Application_Start() { AreaRegistration.RegisterAllAreas(); Register(GlobalConfiguration.Configuration); FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); GlobalConfiguration.Configure(WebApiConfig.Register); RouteConfig.RegisterRoutes(RouteTable.Routes); BundleConfig.RegisterBundles(BundleTable.Bundles); }
Что я уже пробовал:
Когда я выполняю операцию удаления,
я получил сообщение об ошибке
Сообщение : "не найден HTTP-ресурс, соответствующий URI запроса 'http://localhost:63187/api/Employee/2".
MessageDetail
:
"На контроллере" сотрудник "не было обнаружено никаких действий, соответствующих имени "2"."
Имя
Общие:
URL запроса: http: / / localhost:63187 / api/Employee/2
Метод запроса: удалить
Код Состояния:404 Не Найден
Удаленный Адрес: [:: 1]: 63187
заголовок ответа
Доступ-контроля-разрешить-методы:сделать, пост, ставить, удалять, варианты
Cache-Control:no-cache
Содержание-Длина:204
Content-Type:application/json; charset=utf-8
Дата:Чт, 30 марта 2017 12: 00:21 GMT
Срок действия: -1
Pragma:no-cache
Сервер: Microsoft-IIS/10.0
X-AspNet-Версия:4.0.30319
X-Powered-By:ASP.NET
X-SourceFiles:=?UTF-8?B?RDpcU2FtcGxlXE1WQ1xEYXRhTWFuYWdlclxbzgfwdg9yc1xtyw1wbgvcyxbpxevtcgxvewvlxdi=?=
заголовок запроса
Принимать:*/*
Accept-кодирование:gzip, deflate, sdch, br
Accept-Language:en-US, en; q=0.8
Связь:держите-живой
Содержание-Длина:1
Content-Type:application/json; charset=UTF-8
DataServiceVersion: 2.0
Хост:localhost: 63187
MaxDataServiceVersion: 2.0
Происхождение: http: / / localhost: 63187
Реферер:http: / / localhost:63187/CRUDRemote/Remove
Пользовательский агент: Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, как Gecko) Chrome/56.0.2924.87 Safari/537.36
X-Requested-With:XMLHttpRequest
Запрос Полезной Нагрузки
2
Где я совершаю ошибку.
Richard Deeming
Вы проверили, что в вашей базе данных действительно есть сотрудник с таким идентификатором?
Kalai Selvi
да, я это проверил.
Richard Deeming
Попробуйте отладить маршруты:
Отладка ASP.NET веб-API с отладчиком маршрутов[^]