9

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

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

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

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

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

一些线索:

  • 我还没有将它部署到真正的 IIS 服务器上,我在本地运行它。
  • 当我在 Visual Studio 中的 DEBUG 中运行时不会发生错误,仅当我从 Web 浏览器(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);
}

任何帮助将不胜感激。

4

1 回答 1

7

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

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

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

于 2011-01-27T19:29:30.397 回答