Как решить исключение "Файл не существует"? - PullRequest
17 голосов
/ 14 сентября 2010

У меня есть базовый сайт ASP.NET MVC2, который регистрирует одну ошибку «Файл не существует» каждый раз, когда загружается представление (не частичное представление).Я почти уверен, что это потому, что я ссылаюсь на файл с главной страницы, который не существует, но я не могу понять, какой это.

Трассировка стека не полезна (см. Ниже).У кого-нибудь есть советы, как лучше всего отладить это?

File does not exist. :    at System.Web.StaticFileHandler.GetFileInfo(String virtualPathWithPathInfo, String physicalPath, HttpResponse response)
   at System.Web.StaticFileHandler.ProcessRequestInternal(HttpContext context)
   at System.Web.DefaultHttpHandler.BeginProcessRequest(HttpContext context, AsyncCallback callback, Object state)
at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)

Ответы [ 6 ]

55 голосов
/ 15 сентября 2010

Как вы говорите, вероятно, отсутствует файл или изображение, на которое ссылается ваша главная страница. Чтобы зафиксировать ошибку, добавьте следующий обработчик ошибок в ваш Global.asax

protected void Application_Error(object sender, EventArgs e)
{
    Exception ex = Server.GetLastError();

    if (ex.Message == "File does not exist.")
    {
        throw new Exception(string.Format("{0} {1}", ex.Message, HttpContext.Current.Request.Url.ToString()), ex);
    }
}

Затем следует указать, какой ресурс запрашивает страница

5 голосов
/ 05 января 2012

Или при отладке вы можете просто поставить следующую строку в Immediate Window для проверки:

?HttpContext.Current.Request.Url.ToString ()

2 голосов
/ 02 февраля 2012

Проверьте ваши CSS-файлы на URL (resource_path), где «resource_path» не существует.

Я получил то же исключение.Обнаруженная проблема была в файле CSS, где файл изображения отсутствовал в проекте, а не в файловой системе.Например, строка типа:

background-image: url( /images/foo.png );

Где файл "foo.png" отсутствует в папке с изображениями.

Вы можете привести последнее исключение как HttpException, чтобы получить HTMLкод состояния:

HttpException httpEx = Server.GetLastError() as HttpException;
if( httpEx != null )
    httpEx.GetHttpCode();         // Will be HTML status code, 404 in this case. 

Но он не содержит никакой информации о том, что файл отсутствует.Я нашел отсутствующий файл, проверив каждое объявление класса CSS на странице, где происходила эта ошибка.

1 голос
/ 17 апреля 2014

Добавьте следующий метод в Global.asax файл

protected void Application_Error(object sender, EventArgs e)
{
    Exception ex = Server.GetLastError();
    Log.Error("An error occurred", ex);
    Log.Error("Requested url: ", Request.RawUrl);
}

Request.RawUrl Дайте точный URL, который выдает ошибку.

Теперь в вашем файле журнала вы должны увидеть:

Requested url: /favicon.ico
0 голосов
/ 02 октября 2014

в моем случае это была отсутствующая домашняя страница по умолчанию, т.е. default.aspx, который был виновником.

Таким образом, добавление файла default.aspx решило проблему.

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

Это было скорее промежуточное приложение для взаимодействия устаревших систем через Интернет.

0 голосов
/ 09 июня 2013

В моем случае я получал ту же ошибку, хотя не обнаружил никаких «404 ошибок» в консоли браузера. Я даже проверил мастер-файл и не смог найти ни одного пропавшего файла. Оказалось, что браузер ожидает, что favicon.ico будет в корне сайта. Я создал favicon.ico в корне моего сайта, и проблема исчезла. Это был хороший сайт для создания иконки: http://www.favicon.cc/

...