Problem: beim Zugriff auf eine Api-Delete Schnittstelle von WPF auf Asp.Net Core MVC wird die antwort StatusCode 405 Method not allowed zurückgegeben.
Aufruf aus der Client Seite (wpf)
string sURL_Api_Delete = app_settings._Api_Server + "/api/projects/" + sID_on_Server; HttpResponseMessage httpResponseMessage = null; try { httpResponseMessage = await client.DeleteAsync(sURL_Api_Delete); clsSys.fx_Log("ok.Deleted " + sID_on_Server); } catch (Exception ex) { clsSys.fx_Error_Log("Error Delete on Server: : " + ex.Message + "IDProject_on_Server=" + sID_on_Server); } //</ read webApi > |
Mit der URL
httpResponseMessage = await client.DeleteAsync("https://freiberufler-jobs.de/api/projects/10072"); |
Auf der Server-Seite
Asp.Net Core Api
//HttpClient-URL: httpDelete /api/projects/5 [HttpDelete("{id}")] public async Task< ActionResult> Delete(int id) { //-------------< HttpDelete(ID) >------------- //< get UserClaim Info > //*get User from Token var userClaim_in_Token = HttpContext.User.Claims.Where(c => c.Type == ClaimsIdentity.DefaultNameClaimType).FirstOrDefault(); //User as Name if (userClaim_in_Token == null) { return null; } |
Ursache:
Der Return Wert ist vollkommen korrekt.
Der StatusCode 405 und "Method not allowed" kommt von der Asp.Net MVC Action-Antwort BadRequest().
In diesem Fall wurde geprüft, ob der Datensatz auch dem Client gehört.
Wenn beide nicht gleich sind, dann wird die Antwort: "Method not allowed" zurückgesendet
//< check Owner > long IDOwner = project.IDOwner; if (IDOwner != IDCurrent_User) { return BadRequest(); } //</ check Owner > |