Как устранить неполадку "System.Web.HttpException (0x80004005): файл не существует"?
Извинения, если на этом сайте уже был дан ответ, я искал, но не нашел этого точного сценария.
Я добавляю log4net в службу WCF. Я добавил обработчик в событие Application_Error, и он перехватывает ошибку "файл не найден" при каждом запросе.
Я видел это на веб-сайтах, и обычно ошибка может быть связана с отсутствием файла "favicon" в корневом каталоге или отсутствующим изображением, указанным в таблице стилей CSS.
Однако это служба WCF, таблицы стилей CSS нет, и добавление значка фаворита в корень не решило проблему.
У кого-нибудь еще есть хороший способ устранить это?
Некоторые подсказки:
- Я еще не развернул это на реальном сервере IIS, я запускаю его локально.
- Ошибка не возникает, когда я работаю в DEBUG внутри Visual Studio, только когда я получаю доступ к сервису из веб-браузера (IE или Chrome)
Я добавил URL-адрес и путь к файлу сообщения об ошибке, и вот что они:
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/
Вы должны быть в состоянии проверить это в случае с отладчиком.