Dies muss einfach sein und bereits beantwortet, aber ich habe viele Stunden darauf verschwendet. Ich kann mir nicht vorstellen, wie man eine Fehlerseite bei einer falsch eingegebenen Adresse bekommt. Außerdem möchte ich nicht umleiten, sondern die URL behalten. Ich habe viele Kombinationen von CustomErrors, HttpErrors und Application_Error ausprobiert, aber nichts funktioniert für nicht vorhandenen Controller - abhängig von HttpErrors bekomme ich immer IIS 404.0 Seite oder nur eine leere 404 Antwort. Laufen auf IIS 7.5, MVC 3.404-Seite für eine ASP.NET MVC-Anwendung
Antwort
Ich erinnere mich nicht, wo ich die Lösung bekam. Aber hier ist der Code, den Fehler zu umgehen: Zunächst erstellen Sie eine Errorcontroller:
public class ErrorController : Controller
{
//
// GET: /Error/
public ActionResult Index()
{
return RedirectToAction("Index", "Home");
}
public ActionResult Generic()
{
Exception ex = null;
try
{
ex = (Exception)HttpContext.Application[Request.UserHostAddress.ToString()];
}
catch { }
return View();
}
public ActionResult Error404()
{
return View();
}
}
Zweitens könnte der offene globale Datei und fügen Sie den folgenden Code:
protected void Application_Error(object sender, EventArgs e)
{
Exception ex = Server.GetLastError();
Application[HttpContext.Current.Request.UserHostAddress.ToString()] = ex;
}
Drittens Änderung Custom in Ihrem webconfig :
<customErrors mode="Off" defaultRedirect="/Error/Generic">
<error statusCode="404" redirect="/Error/Error404"/>
</customErrors>
Mehr: Ich habe ein weiteres Fehlerlayout erstellt. Es macht die Dinge noch klarer. :)
Hoffe das hilft dir.
ich die folgende Route verwenden, um alle Anforderungen sicherzustellen, keine andere Route Herbst passend dort, dann können Sie diesen Fall behandeln sehr leicht:
// this route is intended to catch 404 Not Found errors instead of bubbling them all the way up to IIS.
routes.MapRoute(
"PageNotFound",
"{*catchall}",
new { controller = "Error", action = "NotFound" }
);
Karte, die letzte (enthalten diese Aussage nach anderen .MapRoute
Aussagen).
Thx Nico, ich benutze Snooze URL, ich überprüfe ob es einen Haken hat. – user1318555
Dies funktioniert nicht für viele Szenarien. Viele Routen werden übereinstimmen, obwohl keine Aktion gefunden wird! Das sind technisch 404s. Deshalb empfehle ich den Ansatz in meinem Kommentar. (die nicht zufällig diese Lösung als eine Komponente einer vielschichtigen Lösung verwendet, die alle Szenarien behandelt) –
@Kirk: Der Punkt in diesem Mapping ist nur um sicherzustellen, dass jede Anfrage mit einem Controller und einer Aktion übereinstimmt. Nicht um sicherzustellen, dass ein bestimmter Controller oder eine bestimmte Aktion überhaupt existiert. In meinem Beispiel habe ich nicht einmal eine NotFound-Aktion in meinem Fehler-Controller; aber jetzt kann ich selbst mit diesem Fehler umgehen, anstatt dass es auf IIS sprudelt. – bevacqua
- 1. ASP.NET - RID für eine DirectoryEntry/SID abrufen
- 2. ASP.NET-Bereitstellungsmodell für eine Live-Site
- 3. ASP.NET MVC2: ViewModel für eine polymorphe Klasse
- 4. Sitzung für eine Registerkarte in ASP.NET
- 5. ASP.NET: Abrufen autorisierter Rollen für eine Seite
- 6. Installer für eine ASP.NET-Web-APP für mehrere Umgebungen erstellen
- 7. Organigramm-Komponente für ASP.NET
- 8. Image Resizer für ASP.NET
- 9. Anmeldung Modell für ASP.NET
- 10. Comet-Implementierung für ASP.NET?
- 11. Kennwortstärkensteuerung für ASP.NET
- 12. Debug-Toolbar für ASP.NET
- 13. Warteschlangenlösungen für ASP.NET MVC
- 14. Datenbank Zugriffsbeschränkung für asp.net
- 15. Caching-Strategie für asp.net
- 16. System.Windows.Media.Imaging für asp.net
- 17. Mischung 3 für ASP.Net?
- 18. Chart-Steuerelemente für ASP.NET
- 19. Anzeigenverwaltung für ASP.NET-Websites
- 20. Asp.net MVC Label für
- 21. Ladebildschirm für asp.net
- 22. leichte Suchmaschine für asp.net
- 23. Zugängliche Steuerelemente für ASP.NET
- 24. Design-Muster für ASP.Net
- 25. Regulärer Ausdruck für asp.net
- 26. Flowchart-Steuerelement für ASP.NET
- 27. rbac für asp.net?
- 28. ASP.NET RADKit für Endeca
- 29. Bootstrap für ASP.NET Webform
- 30. Leistungsüberwachung für ASP.NET MVC2?
mögliche Duplikate von [Wie kann ich 404 in ASP.NET MVC richtig behandeln?] (Http://Stackoverflow.com/a/2577095/189950) Für was es wert ist, das ist der Ansatz, den ich verwende. Es ist ein * seriöser * PIA, der anfänglich eingerichtet wird, und er scheint wirklich übermäßig kompliziert zu sein (und ich bin geneigt, das zu denken) - ** aber ** ... er funktioniert großartig, ist sehr flexibel und du kannst bekomme genau was du willst. –
Thx Kappe. Kirk;) Ich werde es versuchen, aber IMHO ist es zu kompliziert für solch ein häufiges Szenario ... – user1318555
das ist in Ordnung, es gibt * viele * Lösungen, die bei diesem Link angeboten werden. Wenn Sie nach der einfachsten möglichen Lösung suchen, ist dies auch abgedeckt (http://stackoverflow.com/a/5507125/189950). –