Global_Asax Application_Error Запускается вместо страницы по умолчанию IIS7 404 Страница не найдена - PullRequest
3 голосов
/ 26 ноября 2010

У меня есть веб-приложение с Global_Asax и пользовательской страницей ошибок. Когда пользователь пытается войти на недопустимую страницу, которая не существует, в Global_asax запускается Application_Error и регистрируется исключение, которое на самом деле не является исключением (подробности об исключениях вы можете увидеть ниже) Я не хочу обрабатывать этот случай в global_asax, а скорее в IIS. Я также попытался ввести недопустимые пути, заканчивающиеся на .asp и .html, и они отлично работают (они не заканчиваются на global_asax, а на странице 404 по умолчанию).

Мне нужно знать, какую настройку мне нужно изменить в IIS7 Manager.

Любая помощь будет оценена.

Ошибка - файл '/restricted/ff.aspx' не существует.

System.Web.HttpException: файл 'test.aspx' не существует. в System.Web.UI.Util.CheckVirtualFileExists (VirtualPath virtualPath) в System.Web.Compilation.BuildManager.GetVPathBuildResultInternal (VirtualPath virtualPath, логическое значение noBuild, логическое значение allowCrossApp, Boolean allowBuildInPrecompile) в System.Web.Compilation.BuildManager.GetVPathBuildResultWithNoAssert (HttpContext контекст, VirtualPath virtualPath, Boolean noBuild, Boolean allowCrossApp, Boolean allowBuildInPrecompile) в System.Web.Compilation.BuildManager.GetVirtualPathObjectFactory (VirtualPath virtualPath, контекст HttpContext, Boolean allowCrossApp, Boolean noAssert) в System.Web.Compilation.BuildManager.CreateInstanceFromVirtualPath (VirtualPath virtualPath, введите requiredBaseType, HttpContext context, Boolean allowCrossApp, Boolean noAssert) в System.Web.UI.PageHandlerFactory.GetHandlerHelper (HttpContext context, String requestType, VirtualPath virtualPath, String PhysicalPath) в System.Web.HttpApplication.MaterializeHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute () в System.Web.HttpApplication.ExecuteStep (IExecutionStep шаг, логическое и завершено синхронно)

1 Ответ

2 голосов
/ 28 ноября 2011

Вы можете попробовать один из них:

  1. Редактировать файл web.config для пользовательских ошибок:

    <customErrors mode="On">
        <error statusCode="404" redirect="404.aspx"/>
    </customErrors>
    
  2. Добавьте страницу 404.aspx и установите код состояния на 404 :

    public partial class _04 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            Response.StatusCode = 404;
        }
    }
    

Если это также не поможет вам (это может быть сброшено вашей главной страницей):

protected override void Render(HtmlTextWriter writer)
{
    base.Render(writer);
    Response.StatusCode = 404;
}
...