StatusCode:
405, ReasonPhrase: "Method Not Allowed"
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 >
|