如何解决"System.Web.HttpException(0x80004005):文件不存在"?

cam*_*inc 9 asp.net wcf httpexception

如果在本网站上已经回答了这个问题,我很抱歉,但我没有找到这个确切的情况.

我正在将log4net添加到WCF服务.我在Application_Error事件中添加了一个处理程序,它在每个请求中捕获一个找不到文件的错误.

我已经在网站上看到了这一点,通常错误可以追溯到根目录中没有"favicon"文件,或者css样式表中引用的缺失图像.

但是,这是一个WCF服务,没有CSS样式表,并且向根添加favicon没有解决问题.

有没有其他人有一个很好的方法来解决这个问题?

一些线索:

  • 我还没有将它部署到真正的IIS服务器,我在本地运行它.
  • 只有当我从Web浏览器(IE或Chrome)访问服务时,我在Visual Studio中运行DEBUG时才会发生错误
  • 我添加了错误消息的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);
}
Run Code Online (Sandbox Code Playgroud)

任何帮助将不胜感激.

Dav*_*ing 6

原因很可能是该服务尚未指定.当一个Web服务器(也是本地开发者)收到一个文件夹请求时,他们会查看该文件夹中的默认页面(通常称为:index.htm,index.html,default.asp,default.aspx等)和提出(除非您使用基于REST的服务描述).当您从VS运行时,调试将直接转到实际服务.

在这种情况下,因为您已经构建了一个服务,您需要指定确切服务的位置,即http://localhost:3994/service.svc.

另外:如果您启动调试会话然后将URL更改为http://localhost:3994/您应该能够检查调试器的情况.