9

我已经从其他人那里接管了一个网站的代码来完成,并且遇到了一个问题,即每次加载页面时,我的 Global.asax 文件中的 Application_Error 处理程序中都会出现“文件不存在”异常.

我很好奇它是什么,因此尝试使用网站和 Web 应用程序创建全新的解决方案,无论有无母版页和单个 .aspx 页面 - 两者都有相同的问题。

这是在 Windows 7 64 位上使用 VS2010 和 .NET 3.5。

请问有什么想法吗?堆栈跟踪完全没有告诉我,而且我在新项目中得到它的事实很奇怪。

异常堆栈跟踪:

at System.Web.StaticFileHandler.GetFileInfo(String virtualPathWithPathInfo, String physicalPath, HttpResponse response)
at System.Web.StaticFileHandler.ProcessRequestInternal(HttpContext context)
at System.Web.DefaultHttpHandler.BeginProcessRequest(HttpContext context, AsyncCallback callback, Object state)
at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)
4

5 回答 5

10

找出哪个文件不存在的技巧是在Application_Error方法中使用以下代码。

protected void Application_Error(Object sender, EventArgs e)
{
  Exception ex = Server.GetLastError().GetBaseException();
  string file = HttpContext.Current.Request.Url.ToString();
  string page = HttpContext.Current.Request.UrlReferrer.ToString(); 
}

这将检索丢失的文件的名称以及请求来自的原始页面。

于 2011-12-05T20:51:10.003 回答
3

异常中的文件名是什么?如果文件名或路径被混淆,那么您可能在 ASP.NET 临时文件中存在损坏。尝试“清洁解决方案”和“重建解决方案”并再次运行它。

否则,您需要发布更多信息,包括完整的异常消息,而不仅仅是调用堆栈。这是否发生在网站的默认页面上?是否选择了 web 项目作为启动项目?这是发生在 Visual Studio Web 服务器还是 IIS 中?

于 2010-06-27T21:36:40.027 回答
2

我在 gloal.asax 中的 Application_Error 中检测到我的错误我还得到了 Request.Url.ToString(),这会给你罪魁祸首资源。例如,在我的应用程序中,我发现 Application_Error 甚至抱怨 favicon.ico,而且如果您丢失了一些可能从您的 css 引用的文件,它会被 Application_Error 事件捕获。

实际上,例如查看此博客,讨论相同的问题并使用 Request.Url 来发现有问题的资源是什么。这应该有助于http://dotbert.loedeman.nl/httpexception-file-does-not-exist

于 2011-05-20T08:58:02.733 回答
1

可悲的是,我从来没有深究过这个问题,而我的计算机的逾期重建对其进行了排序。

于 2011-02-27T10:43:19.507 回答
1

我为我的情况解决了这个问题......结果项目属性已恢复为“使用当前页面”(在 VS 2010 - 项目属性 | 开始选项 | 开始操作)。

奇怪的是,我已将“开始选项”设置为“特定页面:”——因此在 VS 2010 的某处丢失了它并默认返回为“使用当前页面”。

抢。

于 2012-04-13T19:37:37.663 回答