Stworzyłem API Web 2 i próbuję zrobić przekrój żądania domeny do niego, ale ja dostaję następujący błąd:OPCJE 405 (Method Not Allowed) api web 2
OPTIONS http://www.example.com/api/save 405 (Method Not Allowed)
I miał rozejrzeć i większość uchwał tego problemu mówią, że muszę zainstalować Cors z Nuget i włączyć ją więc mam zainstalowany pakiet i oznaczony mojego kontrolera z
[EnableCors("*", "*", "*")]
Ale to jeszcze nie rozstrzygnęło problem.
My ApiController
tylko posiada następujące Save
metoda:
[ResponseType(typeof(int))]
public IHttpActionResult Save(Student student)
{
if (ModelState.IsValid)
{
using (StudentHelper helper = new StudentHelper())
{
return Ok(helper.SaveStudent(student));
}
}
else
{
return BadRequest(ModelState);
}
}
To jest mój js z innej domeny:
$.ajax({
type: "POST",
crossDomain: true,
data: JSON.stringify(student),
crossDomain: true,
url: 'http://www.example.com/api/save',
contentType: "application/json",
success: function (result) {
console.log(result);
}
});
Czy coś jeszcze muszę zrobić, aby to umożliwić?
To nie rozwiązuje problemu, unika go. Dla tych, którzy muszą faktycznie obsługiwać żądania OPTLINE o preflightach, nie jest to użyteczne. – defines
@defines to rozwiązuje mój problem, więc nie ma potrzeby, aby cokolwiek robić - moim problemem było to, że potrzebowałem prostej prośby, ponieważ nie musiałem obsługiwać preflight. Jeśli ktoś szuka sposobu obsługi preflight, to nie chodzi o to, chodzi o to, w jaki sposób mogę uzyskać moje wezwanie ajax, aby porozmawiać z moim interfejsem API - a odpowiedź brzmi: złożyć prostą prośbę, a nie włączyć obsługę preflight –
Tytuł pytania dotyczy OPCJI zwracających 405. Całkowicie unikasz żądania OPTIONS. To nie jest odpowiedź na to, po prostu go unika. – defines