Получение URL для FileDoesNot Exist с обработкой ошибок MVC3 и .Net? - PullRequest
1 голос
/ 22 июля 2011

Используя следующую обработку ошибок в Application_Error ():

    protected void Application_Error()
    {
        Exception exception = Server.GetLastError();
        Response.Clear();

        HttpException httpException = exception as HttpException;

        if (httpException != null)
        {
            string action;

            switch (httpException.GetHttpCode())
            {
                case 404:
                    // page not found
                    action = "HttpError404";
                    break;
                case 500:
                    // server error
                    action = "HttpError500";
                    break;
                default:
                    action = "General";
                    break;
            }

            // clear error on server
            Server.ClearError();

            Response.Redirect(String.Format("~/Error/{0}/?message={1}", action, exception.Message));
        }
    }

До добавления этого мои страницы отображались нормально.Теперь, когда я добавил это, я получаю около 21 файла не найденных исключений.Сначала я подумал, что некоторые значения маршрутизации были неправильными (но они не выполняются, пока вы не попробовали маршрут), закомментировал их, то же самое.

Я прошел загрузку начальной страницы, так как вся страницарендеринг сразу, один раз, я не смог отследить, откуда они берутся, и трассировка стека не дает мне то, что я ищу:

в System.Web.StaticFileHandler.GetFileInfo (String virtualPathWithPathInfo, String PhysicalPath, ответ HttpResponse)
в System.Web.StaticFileHandler.ProcessRequestInternal (контекст HttpContext, String overrideVirtualPath) в системном контексте..Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute () в System.Web.HttpApplication.ExecuteStep (шаг IExecutionStep, логический и завершенный в синхронном режиме)

1012 * * * * * *CSS и scрипы определены, но их комментирование не помогло решить проблему.

Как я могу отследить это?

1 Ответ

2 голосов
/ 22 июля 2011

Бьюсь об заклад, 5 баксов - это файл favicon.ico, который запрашивают некоторые браузеры и который вы не предоставили. Внутри вашего обработчика ошибок просто посмотрите на свойство Request.Url в режиме отладки, чтобы увидеть запрошенный URL, и вы узнаете, какой файл отсутствует. Также, если вы намерены перенаправить в конце вашего обработчика ошибок, как и вы, вызов Server.ClearError(); не имеет особого смысла.

...