2015-08-07 2 views
1

У меня есть сайт asp.net, и я собираюсь настроить страницу 404, но я не могу заставить ее работать.ASP.Net - Не могу получить мою собственную страницу ошибки

код у меня есть в моем web.config является

<system.web> 
    <customErrors mode="On" defaultRedirect="ResponseRewrite"> 
    <error statusCode="404" redirect="~/Page_Not_Found.aspx" /> 
    </customErrors> 
</system.web> 
<system.webServer> 
    <httpErrors errorMode="Custom"> 
      <remove statusCode="404"/> 
      <error statusCode="404" path="~/Page_Not_Found.aspx" responseMode="Redirect"/> 
    </httpErrors> 
</system.webServer> 

страница ошибки HTML

<%@ Page Title="- Page not found" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="Page_Not_Found.aspx.cs" Inherits="WebApplication1.Page_Not_Found" %> 

<asp:Content ID="404BodyContent" ContentPlaceHolderID="MainContent" runat="server"> 
    <div class="col-xs-12 col-sm-9"> 
     <h1>Page not found</h1> 
     <p>Use this area to provide additional information.</p> 
     <p>Use this area to provide additional information.</p> 
     <p>Use this area to provide additional information.</p> 
     <p>Use this area to provide additional information.</p> 
     <p>Use this area to provide additional information.</p> 
     <p>Use this area to provide additional information.</p> 
    </div> 
</asp:Content> 

Когда я вхожу и недействительный URL я получаю ошибку ниже SERVER

сервера Ошибка в приложении «/». Ошибка выполнения Описание: при обработке запроса возникло исключение . Кроме того, при выполнении пользовательской страницы ошибки для произошло еще одно исключение. Запрос был прерван.

Что я делаю неправильно?

Я рассмотрел другие решения здесь, а также в Интернете, но все исправления, похоже, не помогают мне.

+0

У меня есть ошибка сервера. Отключите пользовательскую ошибку и проверьте фактическое сообщение об исключении. –

+0

@RahulSingh На сервере нет информации, поскольку я опубликовал то, что получаю в своем первоначальном сообщении. У меня нет другого пользовательского права в любом месте моего проекта, так как я посмотрел – murday1983

ответ

0

Наконец-то выяснилось, в чем моя проблема. Это был вопрос я имел с ID в моем asp:Content, я добавила 404 к нему (отображается в моем щёток поста), если я удалить его или изменить его alphacharacters работает

Был

<asp:Content ID="404BodyContent" ContentPlaceHolderID="MainContent" runat="server"> 

Fix - Удалены

<asp:Content ID="BodyContent" ContentPlaceHolderID="MainContent" runat="server"> 

Fix - символы Альфа

<asp:Content ID="FourOFourBodyContent" ContentPlaceHolderID="MainContent" runat="server"> 
1

Может быть исключение брошено, не пойманы в приложении (внутренняя ошибка сервера)

Попробуйте добавить это:

<error statusCode="500" redirect="https://www.google.fr/"/> 

И проверить, если он перенаправляет вас на Google. Если это так, это проблема с кодом приложения, а не из-за IIS.

Также defaultRedirect="ResponseRewrite" представляется мне неправильным. Не должно быть в атрибуте redirectMode="ResponseRewrite"?

Default redirect - это страница, перенаправляемая IIS, если ошибка не является частью подробной пользовательской ошибки (404 в вашем случае).

Если ваше приложение сгенерирует код ошибки 500, вы получите перенаправлены на ResponseRewrite, которую IIS не может найти

+0

Я пробовал свой код и по-прежнему получаю ту же проблему, и я не перенаправляю в Google ни – murday1983

+1

Не могли бы вы рассказать, что такое ваша версия IIS? –

0

Есть две вещи, которые нужно сделать.

1) Отключите пользовательские ошибки, чтобы понять, что на самом деле вызывает проблему.

2) Кажется, в IIS8 есть проблемы с использованием "~ Тильда на пути к пользовательской странице ошибки, пожалуйста, попробуйте следующее:

<system.web> 
    <customErrors mode="On" defaultRedirect="ResponseRewrite"> 
    <error statusCode="404" redirect="/Page_Not_Found.aspx" /> 
    </customErrors> 
</system.web> 

<system.webServer> 
    <httpErrors errorMode="Custom"> 
    <remove statusCode="404"/> 
    <error statusCode="404" path="/Page_Not_Found.aspx" responseMode="Redirect"/> 
</httpErrors> 
</system.webServer> 

http://forums.asp.net/t/1938152.aspx?Tilde+character+not+recognized+in+IIS8+for+custom+error+pages+in+web+config

Также стоит упомянуть его не используйте обе записи конфигурации, если вы IIS7 +, затем убедитесь, что вы используете HTTPErrors поверх customErrors.

Ссылки:

Asp.Net Forums - Tilda Not Recognised

Stackoverflow - Difference between httpErrors and customErrors

+0

Ошибка сервера, которую я получаю, если отключить свои пользовательские сообщения, > Ошибка сервера в приложении «/». > Ресурс не найден. > Описание: HTTP 404. Ресурс, который вы ищете (или его зависимости), мог быть удален, если его имя было изменено или временно недоступно. Просмотрите следующий URL-адрес и убедитесь, что оно написано правильно. > Запрошенный URL:/По умолчанию 1 – murday1983

+0

- это страница, которая действительно отсутствует или недоступна? – Anicho

+0

Страница существует, как будто я нахожу URL-адрес, который я могу получить к нему – murday1983

1

Я подозреваю, что страница, которую вы хотите, чтобы показать, как 404 генерирует исключение. Это не обязательно означает, что исключение находится на самой странице, оно также может быть получено из главной страницы, которую использует страница.

Вы можете попробовать установить контрольную точку в вашей глобальной asax:

protected void Application_Error() 
{ 
    var error = Server.GetLastError(); 
    Logger.Log(error); //This is my own Logging library, so implement something yourself, but you get the idea. 
} 

Когда этот код срабатывает, вы можете изучить внутренние детали исключения и посмотреть, что происходит.

Смежные вопросы