#

Asp.Net Core API : Response Statustext ist nicht mehr vorhanden

 

Leider ist in Asp.Net Core beim Wechsel von MVC auf API bei den Antworten eines Controllers im Fehlerfall kein response.statusText mehr vorhanden.

Scheinbar wurde dieser deaktiviert.

In Asp Core API .Net5 kann auch in der Startup.cs bei Services die Unterdrückung nicht ausgeschaltet werden.

 

 

Asp.Net Core Web API
Status Code – 123 (Response:StatusCode)

return StatusCode(401,"You are not the Owner");

 

Response in React Client

Leider ohne Statustext

status 401

statusText    ''

 

 

Name

Value

Type

response

Response {type: 'basic', url: 'https://localhost:44315/api/articles/33', redirected: false, status: 401, ok: false, …}

object

get body

ƒ body()

function

bodyUsed

false

boolean

headers

Headers

object

ok

false

boolean

redirected

false

boolean

status

401

number

statusText

''

string

type

'basic'

string

url

'https://localhost:44315/api/articles/33'

string

 

 

 

Status Code – 400 (Bad Request)

 

return BadRequest("Statustext of Bad Request 400");

Leider auch ohne StatusText im React Client

Name

Value

Type

response

Response {type: 'basic', url: 'https://localhost:44315/api/articles/0', redirected: false, status: 200, ok: true, …}

object

get body

ƒ body()

function

bodyUsed

false

boolean

headers

Headers

object

ok

true

boolean

redirected

false

boolean

status

200

number

statusText

''

string

type

'basic'

string

url

'https://localhost:44315/api/articles/0'

string

 

Folgende Code Versionen habe ich ausprobiert

if (IDOwner != sIDUser) {

return BadRequest("everything wrong");

//StatusCode(StatusCodes.Status403Forbidden,"nothing in asp");

//StatusCode(StatusCodes.Status403Forbidden, new ApiError() { ErrorMessage = "this is in the statusText" });

//StatusCode(StatusCodes.Status406NotAcceptable,"User is not the Owner");

//return BadRequest(new ApiError(){ErrorMessage = "this is in the statusText" });

//JsonResult myResponse = new JsonResult("StatusCode");

//return myResponse ;

//return BadRequest(sResult);

///return new BadRequestObjectResult("StatusText for BadRequest");

//return BadRequest("StatusText for BadRequest");

}

//</ check Owner >

}

 

Laut einer Anleitung aus MVC kann man die Unterdrückung in der Startup.cs deaktivieren, aber das hat auch zu keinem Erfolg geführt

            services.AddMvc()

            .ConfigureApiBehaviorOptions(options =>

            {

                options.SuppressMapClientErrors = false;    // <-- THIS SHOULD BE FALSE

                //options.InvalidModelStateResponseFactory = context =>

                //{

                //    var result = new BadRequestObjectResult(context.ModelState);

 

                //    // TODO: add `using System.Net.Mime;` to resolve MediaTypeNames

                //    result.ContentTypes.Add(MediaTypeNames.Application.Json);

                //    result.ContentTypes.Add(MediaTypeNames.Application.Xml);

 

                //    return result;

                //};

            });

 

 

Return StatusCodes in Asp.Net Core API

 

Angezeigter Status Code in React bei verwendung von return StatusCode(..) in Asp.Net Core API

 

 

Und kann dann entsprechend des Response.Status Codes im Client reagieren

 

        };

        const response = await fetch('api/articles/' + this.state.idarticle, requestOptions); //*SEND DATA

        if (response.status !== 0) {

            if (response.status === 400) alert("Bad Data Request");

            else if (response.status === 403) alert("User is not Owner");

            else alert('send error:' + response.statusText);

        }

 

 

 

Return Values for StatusCodes

Status

 

100

Continue

Status

 

412

PreconditionFailed

Status

 

413

PayloadTooLarge

Status

 

413

RequestEntityTooLarge

Status

 

414

RequestUriTooLong

Status

 

414

UriTooLong

Status

 

415

UnsupportedMediaType

Status

 

416

RangeNotSatisfiable

Status

 

416

RequestedRangeNotSatisfiable

Status

 

417

ExpectationFailed

Status

 

418

ImATeapot

Status

 

419

AuthenticationTimeout

Status

 

421

MisdirectedRequest

Status

 

422

UnprocessableEntity

Status

 

423

Locked

Status

 

424

FailedDependency

Status

 

426

UpgradeRequired

Status

 

428

PreconditionRequired

Status

 

429

TooManyRequests

Status

 

431

RequestHeaderFieldsTooLarge

Status

 

451

UnavailableForLegalReasons

Status

 

500

InternalServerError

Status

 

501

NotImplemented

Status

 

502

BadGateway

Status

 

503

ServiceUnavailable

Status

 

504

GatewayTimeout

Status

 

505

HttpVersionNotsupported

Status

 

506

VariantAlsoNegotiates

Status

 

507

InsufficientStorage

Status

 

508

LoopDetected

Status

 

411

LengthRequired

Status

 

510

NotExtended

Status

 

410

Gone

Status

 

408

RequestTimeout

Status

 

101

SwitchingProtocols

Status

 

102

Processing

Status

 

200

OK

Status

 

201

Created

Status

 

202

Accepted

Status

 

203

NonAuthoritative

Status

 

204

NoContent

Status

 

205

ResetContent

Status

 

206

PartialContent

Status

 

207

MultiStatus

Status

 

208

AlreadyReported

Status

 

226

IMUsed

Status

 

300

MultipleChoices

Status

 

301

MovedPermanently

Status

 

302

Found

Status

 

303

SeeOther

Status

 

304

NotModified

Status

 

305

UseProxy

Status

 

306

SwitchProxy

Status

 

307

TemporaryRedirect

Status

 

308

PermanentRedirect

Status

 

400

BadRequest

Status

 

401

Unauthorized

Status

 

402

PaymentRequired

Status

 

403

Forbidden

Status

 

404

NotFound

Status

 

405

MethodNotAllowed

Status

 

406

NotAcceptable

Status

 

407

ProxyAuthenticationRequired

Status

 

409

Conflict

Status

 

511

NetworkAuthenticationRequired



 

Mobile

.