Как устранение неполадок «System.web.httpexception (0x80004005): файла не существует»?
-
26-10-2019 - |
Вопрос
Приносим извинения, если на этом уже ответили на этом сайте, я искал, но не нашел этот точный сценарий.
Я добавляю log4net в службу WCF. Я добавил обработчик в событие Application_error, и он поймает ошибку, не найденную по ошибке по каждому запросу.
Я видел это с веб -сайтами, и обычно ошибка можно проследить до того, как не имел «Favicon» файла в корневом каталоге, или до отсутствующего изображения, на которое ссылаются в таблице стилей CSS.
Тем не менее, это сервис WCF, таблица стилей CSS нет, и добавление изыскания в корень не решил проблему.
У кого -нибудь еще есть хороший способ устранения неполадок?
Некоторые подсказки:
- Я еще не развернул это на настоящем сервере IIS, я запускаю его локально.
- Ошибка не происходит, когда я работаю в отладке внутри Visual Studio, только когда я получаю доступ к сервису из веб -браузера (т.е. или хром)
Я добавил URL и путь к файлу в сообщение об ошибке, и это то, чем они есть:
URL: http: // localhost: 3994/
Путь к файлу: /
Ошибка: 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);
}
Любая помощь будет очень оценена.
Решение
Причина в том, что услуга не была указана. Когда веб -сервер (локальный Dev One) получает запрос на папку, которую они смотрят в эту папку для страницы по умолчанию (обычно называемой: index.htm, index.html, default.asp, default.aspx и т. Д.) И Представьте это (если вы не используете описание службы на основе покоя). Когда вы забегаете от VS отладки, приведут вас прямо к фактическому сервису.
В этом случае, потому что вы создали услугу, вам необходимо указать местоположение точного обслуживания, т.е. http://localhost:3994/service.svc
.
Также: если вы начнете сеанс отладки, а затем измените URL на http://localhost:3994/
Вы должны быть в состоянии проверить, что это так с отладчиком.