asp.net - 如何排除 "System.Web.HttpException (0x80004005): File does not exist"故障?

标签 asp.net wcf httpexception

如果这个问题已经在这个网站上得到解答,我深表歉意,我进行了搜索,但没有找到这个确切的场景。

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

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

但是,这是一个WCF服务,没有CSS样式表,并且在根目录中添加favicon并不能解决问题。

有没有其他人有解决此问题的好方法?

一些线索:

  • 我尚未将其部署到真正的 IIS 服务器,我正在本地运行它。
  • 当我在 Visual Studio 中以 DEBUG 运行时,仅当我从网络浏览器(IE 或 Chrome)访问服务时,不会发生该错误
  • 我将 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);
}

任何帮助将不胜感激。

最佳答案

原因可能是未指定服务。当 Web 服务器(也包括本地开发服务器)收到对文件夹的请求时,它们会在该文件夹中查找默认页面(通常称为:index.htm、index.html、default.asp、default.aspx 等)并呈现(除非您使用基于 REST 的服务描述)。当您从 VS 运行时,调试将直接带您进入实际服务。

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

另外:如果您启动调试 session ,然后将 URL 更改为 http://localhost:3994/,您应该能够通过调试器检查情况是否如此。

关于asp.net - 如何排除 "System.Web.HttpException (0x80004005): File does not exist"故障?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4819170/

相关文章:

c# - 组合/聚合许多底层服务响应的 WCF 路由器

ASP.NET 如何获取 HttpException 错误代码

wcf - C# : Instant Messager - Networking (. NET 远程处理/WCF/套接字)?

c# - 如何在 IHttpHandler 中捕获特定的 HttpException (#0x80072746)

asp.net - 重写 ASP.NET 输出时为 "Invalid use of response filter"

c# - Sense net 下载 sn-evaluation-webpi-6.4.0.7114.zip 无法执行以下步骤

c# - ASP.Net Web API 2 方法未显示正确数据但行数正确

javascript - 导出到 excel 数据表时换行

asp.net - 动态添加控件时更改asp.net html输出

jquery - 对 WCF 服务进行 AJAX 调用的最佳选择是什么?