Readdy Write  
0,00 €
Your View Money
Views: Count
Self 20% 0
Your Content 60% 0

Users by Links 0
u1*(Content+Views) 10% 0
Follow-Follower 0
s2*(Income) 5% 0

Count
Followers 0
Login Register as User

StatusCode: 405, ReasonPhrase: "Method Not Allowed"

09.08.2018 (👁8516)


 

 

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 TaskActionResultDelete(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 >