Ich habe CORS mit der Arbeit folgende:WebAPI CORS - warum kommt die OPTIONS-Anfrage in meinen Controller?
[System.Web.Http.HttpPut]
[System.Web.Http.AcceptVerbs("OPTIONS")]
[System.Web.Http.Route("api/exercise")]
public HttpResponseMessage UpdateExercise(Exercise exercise) {
try {
_adminService.UpdateExercise(exercise);
return Request.CreateResponse(HttpStatusCode.OK, "Success");
} catch (Exception e) {
return Request.CreateResponse(HttpStatusCode.InternalServerError, e);
}
}
In meinem global.asax
:
protected void Application_BeginRequest() {
if (Request.Headers.AllKeys.Contains("Origin") && Request.HttpMethod == "OPTIONS") {
Response.Flush();
}
}
Aber etwas seltsam passiert - wenn ich einen Haltepunkt in meinem Controller setzen, macht die OPTIONS-Anforderung seinen Weg zu die Innereien mit einer null
Übung. Warum passiert dies? Ich würde erwarten, dass die Flush()
dies verhindert.
So wie es aussieht, muss ich für alle meine CORS-sensitiven Endpunkte (PUTs, DELETEs) Checks auf null setzen. Dies scheint unelegant zu sein ... sollte ich in der Lage sein zu verhindern, dass OPTIONS-Anfragen die Steuerungslogik treffen, anstatt einfach sofort mit den erforderlichen Headern zu antworten?
@CarlHancke - das hat den Trick gemacht. Sieht so aus, als ob ich die Hälfte einer anderen Methode implementiert hätte ... fühle mich frei, als Antwort zu posten, und vielen Dank :) – SB2055