2017-02-22 18 views
0

Мне нужно настроить некоторые страницы ошибок в моем приложении веб-форм. Таким образом, я создал новый веб-форму 404ErrorPage.aspxНастройка страницы ошибки в приложении webforms

public partial class _404ErrorPage : System.Web.UI.Page 
    { 
     protected void Page_Load(object sender, EventArgs e) 
     { 
      // If you're running under IIS 7 in Integrated mode set use this line to override 
      // IIS errors: 
      Response.TrySkipIisCustomErrors = true; 

      // Set status code and message; you could also use the HttpStatusCode enum: 
      // System.Net.HttpStatusCode.NotFound 
      Response.StatusCode = 404; 
      Response.StatusDescription = "Page not found"; 
     } 
    } 

404ErrorPage.aspx

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="404ErrorPage.aspx.cs" Inherits="WebApp._404ErrorPage" %> 


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 


<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
    <title>Page not found</title> 
    <style type="text/css"> 
     body { 
      background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABoAAAAaCAYAAACpSkzOAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAABZ0RVh0Q3JlYXRpb24gVGltZQAxMC8yOS8xMiKqq3kAAAAcdEVYdFNvZnR3YXJlAEFkb2JlIEZpcmV3b3JrcyBDUzVxteM2AAABHklEQVRIib2Vyw6EIAxFW5idr///Qx9sfG3pLEyJ3tAwi5EmBqRo7vHawiEEERHS6x7MTMxMVv6+z3tPMUYSkfTM/R0fEaG2bbMv+Gc4nZzn+dN4HAcREa3r+hi3bcuu68jLskhVIlW073tWaYlQ9+F9IpqmSfq+fwskhdO/AwmUTJXrOuaRQNeRkOd5lq7rXmS5InmERKoER/QMvUAPlZDHcZRhGN4CSeGY+aHMqgcks5RrHv/eeh455x5KrMq2yHQdibDO6ncG/KZWL7M8xDyS1/MIO0NJqdULLS81X6/X6aR0nqBSJcPeZnlZrzN477NKURn2Nus8sjzmEII0TfMiyxUuxphVWjpJkbx0btUnshRihVv70Bv8ItXq6Asoi/ZiCbU6YgAAAABJRU5ErkJggg==); 
     } 

     .error-template { 
      padding: 40px 15px; 
      text-align: center; 
     } 

     .error-actions { 
      margin-top: 15px; 
      margin-bottom: 15px; 
     } 

      .error-actions .btn { 
       margin-right: 10px; 
      } 
    </style> 
</head> 
<body> 
    <form id="HtmlForm" runat="server"> 
     <div class="container"> 
      <div class="row"> 
       <div class="col-md-12"> 
        <div class="error-template"> 
         <h1>Oops!</h1> 
         <h2>404 Not Found</h2> 
         <div class="error-details"> 
          Sorry, an error has occured, Requested page not found! 

         </div> 
         <div class="error-actions"> 
          <a href="http://www.jquery2dotnet.com" class="btn btn-primary btn-lg"><span class="glyphicon glyphicon-home"></span> 
           Take Me Home </a><a href="http://www.jquery2dotnet.com" class="btn btn-default btn-lg"><span class="glyphicon glyphicon-envelope"></span>Contact Support </a> 
         </div> 
        </div> 
       </div> 
      </div> 
     </div> 

    </form> 
</body> 
</html> 

Global.asax.cs

protected void Application_Error(object sender, EventArgs e) 
     { 
      // An error has occured on a .Net page. 
      var serverError = Server.GetLastError() as HttpException; 

      if (null != serverError) 
      { 
       int errorCode = serverError.GetHttpCode(); 

       if (404 == errorCode) 
       { 
        Server.ClearError(); 
        Server.Transfer("404ErrorPage.aspx"); 
       } 
      } 
     } 

Web.config

<system.web> 


    <customErrors mode="On" defaultRedirect="404ErrorPage.aspx"> 
     <error statusCode="403" redirect="404ErrorPage.aspx" /> 
     <error statusCode="404" redirect="404ErrorPage.aspx" /> 
    </customErrors> 

Это не сработало, приложение по-прежнему использует страницу с ошибкой по умолчанию.

Так что мне нужно знать

  1. Что является причиной этого?
  2. Как это исправить?

Спасибо,

+1

Какая ошибка Код страницы по умолчанию? – Dalorzo

+0

@ Dalorzo Я добавил код представления –

ответ

0

Благодаря К @Tieson я получил этот ответ here

Для IIS < = 6, добавить к <system.web>:

<customErrors mode="On" redirectMode="ResponseRewrite"> 
    <error statusCode="404" redirect="/404.aspx"/> 
    <error statusCode="500" redirect="/500.aspx"/> 
</customErrors> 

Для IIS7 +, добавить до <system.webServer>:

<httpErrors errorMode="Custom"> 
    <remove statusCode="404"/> 
    <error statusCode="404" path="/404.aspx" responseMode="ExecuteURL"/> 
    <remove statusCode="500"/> 
    <error statusCode="500" path="/500.aspx" responseMode="ExecuteURL"/> 
</httpErrors> 
Смежные вопросы