如何排除故障" System.Web.HttpException(0x80004005):文件不存在"?

时间:2011-01-27 16:42:08

标签: asp.net wcf httpexception

道歉,如果已经在本网站上回答了这个问题,我搜索了但没有找到这个确切的场景。

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

我在网站上看过这个,通常错误可以追溯到根目录中没有“favicon”文件,或者css样式表中引用的丢失图像。

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

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

一些线索:

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

答案 0 :(得分:6)

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

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

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