【问题标题】:System.Web - File does not exist [duplicate]System.Web - 文件不存在[重复]
【发布时间】:2014-02-19 00:42:34
【问题描述】:

这个问题更多是出于好奇。场景是,我放了一些代码让我知道我的 ASP.Net 内部网门户中是否以及何时出现任何错误。绝对没有问题,更多的是积极主动,以防万一。

长话短说,我在Global.asax.cs添加了这段代码:

protected void Application_Error(object sender, EventArgs e) {
    try {
        Exception ex = Server.GetLastError();

        if (ex != null) {
            MailMessage message = new MailMessage("a@company.com.au", "me@company.com.au");
            message.Subject = @"Error";
            message.Body = string.Format(@"<html><body>Unhandled error on: {0} <br/> {1} <br/> {2}",ex.Source.ToString(),ex.Message,ex.ToString ());
            message.IsBodyHtml = true;

            SmtpClient client = new SmtpClient("server.company.com.au");
            client.Send(message);
            message.Dispose();
            client.Dispose();
        }
    } catch (Exception) { }
}

而且我一直在我的电子邮件中收到此错误消息:

出现未处理的错误:System.Web 文件不存在。 System.Web.HttpException (0x80004005):文件不存在。在 System.Web.StaticFileHandler.GetFileInfo(字符串 virtualPathWithPathInfo,字符串物理路径,HttpResponse 响应) 在 System.Web.StaticFileHandler.ProcessRequestInternal(HttpContext 上下文,字符串 overrideVirtualPath) 在 System.Web.DefaultHttpHandler.BeginProcessRequest(HttpContext 上下文, AsyncCallback 回调,对象状态)在 System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() 在 System.Web.HttpApplication.ExecuteStep(IExecutionStep 步骤, Boolean & completedSynchronously)

我被难住了。我不知道这个错误来自哪里,我仍在努力寻找它。它没有以任何方式影响网站的任何方面。我相信这个错误之前会出现,因为我所做的只是添加上面的代码。我正在使用 .Net Farmework 4。

有人知道这是什么吗?

【问题讨论】:

  • @MikeSmithDev - catch 有一个日志到文件功能,为了便于阅读,我在此处省略了该功能。顺便说一句,日志文件仍然是空的。
  • 可能的重复说明它在开发服务器中的问题,我的是在生产服务器中。开发服务器没有问题,开发机器也没有问题。
  • ...服务器无关紧要。这是相同的错误,并且可能以相同的方式解决。你缺少一个文件,你只需要隔离调用它的页面。
  • 好的,所以我将所有 .js、.css 和图像文件(没有服务器端代码的文件)从开发机器复制到生产服务器,目前该错误似乎已经停止。

标签: c# asp.net .net


【解决方案1】:

对于所有错误记录,我强烈推荐ELMAH。易于实施,当发生某些错误时,它可以通过电子邮件发送给您。

还可以节省您创建本土解决方案的时间。

【讨论】:

  • 感谢您的链接。我以前从未听说过。下次我会记住这一点,因为这个项目或多或少无关紧要,而且我记录错误只是为了测试目的(因为这个项目无关紧要)。
【解决方案2】:

请检查您的母版页引用的丢失文件或图像。 要捕获错误,请将以下错误处理程序添加到您的 Global.asax

protected void Application_Error(object sender, EventArgs e)
{
    Exception ex = Server.GetLastError();

    if (ex.Message == "File does not exist.")
    {
        throw new Exception(string.Format("{0} {1}", ex.Message, HttpContext.Current.Request.Url.ToString()), ex);
    }
}

有时这个问题与缺少文件 favicon.ico 相关

【讨论】:

  • ...为什么在实际异常中抛出new异常...?
  • 在发送邮件之前,你也可以调试这段代码,这样它就会告诉你缺少的资源
  • 在我的计算机上运行时,它永远不会在调试器中被击中。只有在部署时它才会给我错误。
猜你喜欢
  • 1970-01-01
  • 2014-01-04
  • 2020-06-05
  • 2018-10-30
  • 2016-09-24
  • 1970-01-01
  • 2020-03-25
  • 2020-05-03
  • 2012-03-17
相关资源
最近更新 更多