Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Wenn eine T
in einer MVC/API-Controlleraktion zurückgegeben wird, die den Rückgabetyp als ActionResult<TValue> deklariert, wird der ObjectResult.StatusCode immer auf 200 gesetzt, außer wenn das T
ein ProblemDetails ist.
Diese Änderung kann in einigen Szenarien zu unerwartetem Verhalten führen, in denen Sie den Statuscode manuell festlegen, da dies zuvor der ObjectResult.StatusCode Fall war null
. Außerdem könnte ein Aktionsfilter von dieser Änderung betroffen sein, wenn er einen NULL-Wert anstelle von 200 erwartet.
Eingeführte Version
ASP.NET Core 6.0
Vorheriges Verhalten
Zuvor erzeugte die Aktion eines Controllers, die T
zurückgibt und Response.StatusCode
setzt, manuell den angegebenen Antwortstatuscode. Beispielsweise generiert die Aktion des folgenden Controllers eine 202 Accepted
Antwort.
// Generates a 202 Accepted response
public ActionResult<Model> Get()
{
Response.StatusCode = StatusCodes.Status202Accepted;
return new Model();
}
Neues Verhalten
Nun generiert die Handlung desselben Controllers, die T
zurückgibt und Response.StatusCode
manuell festlegt, immer eine 200 OK
-Antwort.
// Generates a 200 OK response
public ActionResult<Model> Get()
{
Response.StatusCode = StatusCodes.Status202Accepted;
return new Model();
}
Art der einschneidenden Änderung
Diese Änderung kann sich auf die Quellkompatibilität auswirken.
Grund für Änderung
Das Zurückgeben eines Statuscodes von 200 OK
ist seit ASP.NET Core 3.1 dokumentiert. Es behält jedoch StatusCode als null
bei und generiert schließlich eine 200 OK
Antwort nur, da es die Standardeinstellung ist. Da sich das interne Standardverhalten ändern könnte, haben wir beschlossen, nicht auf die Standardeinstellung zu vertrauen und stattdessen explizit StatusCode auf das erwartete 200 OK
festzulegen.
Empfohlene Aktion
Wenn Ihr Code den Statuscode manuell festlegt und durch diese Änderung unterbrochen wird, müssen Sie die Controlleraktion ändern. Der folgende Codeausschnitt legt beispielsweise einen Statuscode von 202 fest und wird durch diese Änderung unterbrochen.
public ActionResult<Model> Get()
{
Response.StatusCode = StatusCodes.Status202Accepted;
return new Model();
}
Um das gewünschte Verhalten eines 202-Statuscodes beizubehalten, zeigen die folgenden Codeausschnitte einige Optionen an.
public ActionResult<Model> Get()
{
return Accepted(new Model());
}
// or
public ActionResult<Model> Get()
{
return StatusCode(StatusCodes.Status202Accepted, new Model());
}
// or
public Model Get()
{
Response.StatusCode = StatusCodes.Status202Accepted;
return new Model();
}
Betroffene APIs
- MVC/API-Controlleraktionen