我已经从其他人手中接管了一个网站的代码,并且遇到了每次加载页面时遇到的问题,我在全局的Application_Error处理程序中捕获到了“File Does Not Exist”异常.asax文件。
我很好奇它是什么,因此尝试使用网站和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)
答案 0 :(得分: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();
}
这将检索缺少的文件的名称以及请求来自的原始页面。
答案 1 :(得分:3)
例外中的文件名是什么?如果文件名或路径被混淆,那么您可能在ASP.NET临时文件中有损坏。尝试“清洁解决方案”和“重建解决方案”并再次运行。
否则,您需要发布更多信息,包括完整的异常消息,而不仅仅是调用堆栈。这是否发生在网站的默认页面上?是否将Web项目选为启动项目?这是在Visual Studio Web服务器或IIS吗?
中发生的答案 2 :(得分: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
答案 3 :(得分:1)
我从来没有陷入过这种悲伤的底层,而且我的计算机已经过期重建了它。
答案 4 :(得分:1)
我为我的情况解决了这个问题......结果是项目属性已经恢复为“使用当前页面”(在VS 2010中 - 项目属性|开始选项|开始操作)。
奇怪的是,我已经将“开始选项”设置为“特定页面:” - 因此沿着VS 2010的某个位置丢失了它并且默认返回“使用当前页面”。
罗布。