Как устранить неполадку "System.Web.HttpException (0x80004005): файл не существует"?

Извинения, если на этом сайте уже был дан ответ, я искал, но не нашел этого точного сценария.

Я добавляю log4net в службу WCF. Я добавил обработчик в событие Application_Error, и он перехватывает ошибку "файл не найден" при каждом запросе.

Я видел это на веб-сайтах, и обычно ошибка может быть связана с отсутствием файла "favicon" в корневом каталоге или отсутствующим изображением, указанным в таблице стилей CSS.

Однако это служба WCF, таблицы стилей CSS нет, и добавление значка фаворита в корень не решило проблему.

У кого-нибудь еще есть хороший способ устранить это?

Некоторые подсказки:

  • Я еще не развернул это на реальном сервере IIS, я запускаю его локально.
  • Ошибка не возникает, когда я работаю в DEBUG внутри Visual Studio, только когда я получаю доступ к сервису из веб-браузера (IE или Chrome)
  • Я добавил URL-адрес и путь к файлу сообщения об ошибке, и вот что они:

    URL: http://localhost:3994/

    FilePath: /

    Ошибка: System.Web.HttpException (0x80004005): файл не существует.

Изменить: вышеуказанные значения - это то, что отображается в зарегистрированном исключении:

protected void Application_Error(object sender, EventArgs e)
{
    var objErr = Server.GetLastError().GetBaseException();
    if (objErr is System.Web.HttpException)
    {
        var filePath = Context.Request.FilePath;
        var url = ((HttpApplication) sender).Context.Request.Url;
        Log.Error("URL: " + url + "; FilePath: " + filePath, objErr);
    } else
        Log.Error("Application Error", objErr);
}

Любая помощь будет принята с благодарностью.

1 ответ

Решение

Вероятно, причина в том, что услуга не была указана. Когда веб-сервер (в том числе и локальный разработчик) получает запрос на папку, он ищет в этой папке страницу по умолчанию (обычно она называется: index.htm, index.html, default.asp, default.aspx и т. Д.) И представьте это (если вы не используете описание сервиса на основе REST). Когда вы запускаете из VS, отладка приведет вас прямо к реальному сервису.

В этом случае, потому что вы создали сервис, вам нужно указать точное местоположение сервиса, т.е. http://localhost:3994/service.svc,

Также: если вы запустите сеанс отладки, а затем измените URL-адрес на http://localhost:3994/ Вы должны быть в состоянии проверить это в случае с отладчиком.

Другие вопросы по тегам