asp.net-mvc
Http-felhantering
Sök…
Introduktion
Varje webbplats måste hantera fel. Du kan låta dina användare se lager 404 eller 500 felsidor som IIS raderar ut eller genom att använda Web.Config och en enkel kontroller kan du fånga dessa fel och leverera dina egna anpassade felsidor.
Grundläggande installation
Detta exempel kommer att täcka att skapa en anpassad felsida för 404 Page Not Found och 500 Server Error. Du kan utöka den här koden för att fånga alla felkoder du behöver.
web.config
Om du använder IIS7 och högre, ignorera <CustomError..
och använd <httpErrors...
istället.
Lägg till följande i system.webServer
noden:
<httpErrors errorMode="Custom" existingResponse="Replace">
<remove statusCode="404" />
<remove statusCode="500" />
<error statusCode="404" path="/error/notfound" responseMode="ExecuteURL" />
<error statusCode="500" path="/error/servererror" responseMode="ExecuteURL" />
</httpErrors>
Detta säger webbplatsen att rikta 404-fel till ~/error/notfound
och 500-fel till ~/error/servererror
. Det kommer också att bevara din begärda URL (tänk överföring snarare än omdirigera ) så användaren kommer aldrig att se URL ~/error/...
-sidan.
Därefter behöver du en ny Error
så ...
public class ErrorController : Controller
{
public ActionResult servererror()
{
Response.TrySkipIisCustomErrors = true;
Response.StatusCode = (int)HttpStatusCode.InternalServerError;
return View();
}
public ActionResult notfound()
{
Response.TrySkipIisCustomErrors = true;
Response.StatusCode = (int)HttpStatusCode.NotFound;
return View();
}
}
Det viktigaste att notera här är Response.TrySkipIisCustomErrors = true;
. Detta kommer att kringgå IIS och tvinga din felsida igenom.
Slutligen, skapa motsvarande NotFound
och ServerError
vyer och ServerError
dem så att det är allt fint och smidigt med din webbplats design.
Hej presto - anpassade felsidor.