У меня есть приложение WebApi и простой потребительский веб-клиент. Я отправляю запросы на webApi, используя angularJS от веб-клиента. Конечно же, курс уже включен.
У меня были проблемы с Post on chrome, но я исправил его с помощью param для отправленного объекта, я думал, что это будет то же самое для Put, но я получил: XMLHttpRequest не может загрузить URL. Недопустимый код состояния HTTP 400 'на хроме, тогда как он работает в IE.
Код С#:
public void UpdateLampe(int Id, Lampe lampe)
{
var context = new eDomDataContext();
var found = context.Lampes.SingleOrDefault(p => p.Id == Id);
if (found != null)
{
found.Etat = lampe.Etat;
found.Date = DateTime.Now;
context.Lampes.Attach(found);
context.Entry(found).State = EntityState.Modified;
context.SaveChanges();
}
}
//Post request (works ok)
var lampe = $.param({'TypeObject': typeObject, 'SalleId': salleId});
$http({
method: "POST",
url: "http://localhost:1770/api/Lampe",
data: lampe,
headers: {'Content-Type': 'application/x-www-form-urlencoded',}
}).success(function (data) {
alert("it works");
}).error(function () {
console.log(Error);
alert('Error reading JSON file.');
})
.then(function (response) {
return response;
});
//Put request <= still have problem
var etat = $.param({'Etat' : false});
$http({
method: "PUT",
url: "http://localhost:1770/api/Lampe/1" ,
data: etat,
headers: {'Content-Type': 'application/x-www-form-urlencoded',}
}).success(function (data) {
alert("it works");
}).error(function () {
console.log(Error);
alert('Error reading JSON file. - ');
})
.then(function (response) {
return response;
});
Есть ли что-нибудь с тем, что я сделал?
Спасибо за помощь.
Я нашел решение здесь: http://ask.webatall.com/iis/18460_asp-net-web-api-put-delete-verbs-not-allowed-iis-8.html
Все дело в разрешении PUT & DELETE в web.config
Это может помочь кому-то.