Ich habe eine Aktion, die eine Zeichenfolge enthält, mit der einige Daten abgerufen werden. Wenn diese Zeichenfolge dazu führt, dass keine Daten zurückgegeben werden (möglicherweise weil sie gelöscht wurden), möchte ich eine 404 zurückgeben und eine Fehlerseite anzeigen.
Ich verwende derzeit nur die Rückgabe einer speziellen Ansicht, in der eine für diese Aktion spezifische Fehlermeldung angezeigt wird, dass das Element nicht gefunden wurde. Dies funktioniert einwandfrei, möchte aber im Idealfall einen 404-Statuscode zurückgeben, damit Suchmaschinen wissen, dass dieser Inhalt nicht mehr vorhanden ist, und ihn aus den Suchergebnissen entfernen können.
Was ist der beste Weg, um dies zu erreichen?
Ist es so einfach wie Response.StatusCode = 404 zu setzen?
quelle
Antworten:
Es gibt mehrere Möglichkeiten, dies zu tun.
throw new HttpException(404, "Some description");
quelle
In ASP.NET MVC 3 und höher können Sie ein HttpNotFoundResult vom Controller zurückgeben.
quelle
return new HttpNotFoundResult("optional description");
HttpNotFound()
. Sie könnten alsoreturn HttpNotFound("optional description")
stattdessen zurückkehren.In MVC 4 und höher können Sie die integrierten
HttpNotFound
Hilfsmethoden verwenden:oder
quelle
Code:
Web.config
quelle
Ich habe das benutzt:
quelle
Wenn Sie mit .NET Core arbeiten, können Sie dies tun
return NotFound()
quelle
In NerdDinner zB. Probieren Sie es aus
quelle
Keines der obigen Beispiele hat für mich funktioniert, bis ich die mittlere Zeile unten hinzugefügt habe:
quelle
return HttpNotFound();
bei dir nicht funktioniert hat? Wie alt ist dein System?return HttpNotFound();
? Es funktioniert gut mit MVC 4 abwärts. msdn.microsoft.com/en-us/library/… "Die TrySkipIisCustomErrors-Eigenschaft wird nur verwendet, wenn Ihre Anwendung in IIS 7.0 gehostet wird. Wenn sie im klassischen Modus in IIS 7.0 ausgeführt wird, ist der Standardwert der TrySkipIisCustomErrors-Eigenschaft true. Wenn sie im integrierten Modus ausgeführt wird ist der Standardwert der TrySkipIisCustomErrors-Eigenschaft false. "Ich benutze:
Das funktioniert bei mir :-)
quelle
In .NET Core 1.1:
quelle
Sie können auch tun:
quelle
Bitte versuchen Sie den folgenden Demo-Code:
quelle