我想深入了解困扰我一段时间的事情。一个人如何读取这样的ASP.net错误消息:
错误:目前无法使用。 DotNetNuke.Services.Exceptions.ModuleLoadException:服务器标记格式不正确。 ---> System.Web.HttpParseException:服务器标记格式不正确。 ---> System.Web.HttpException:服务器标记格式不正确。 System.Web.UI.TemplateParser.ParseStringInternal(String text,Encoding fileEncoding)中的System.Web.UI.TemplateParser.ProcessError(String message)处于System.Web.UI.TemplateParser.ParseString(String text,VirtualPath virtualPath,Encoding fileEncoding) )--- System.Web.UI.TemplateParser.ParseFile(String physicalPath,VirtualPath virtualPath)上的System.Web.UI.TemplateParser.ParseString(String text,VirtualPath virtualPath,Encoding fileEncoding)的内部异常堆栈跟踪结束位于System.Web.Compilation.Builation上的System.Web.Compilation.BaseTemplateBuildProvider.get_CodeCompilerType()的System.Web.UI.TemplateParser.Parse()处于System.Web.Compilation.Build上的System.Web.Compilation.BuildProvider.GetCompilerTypeFromBuildProvider(BuildProvider buildProvider)处。在System.Web.Compilation.Builation上的System.Web.Compilation.BuildProvidersCompiler.PerformBuild()中的System.Web.Compilation.BuildManager.CompileWebFile(VirtualPath虚拟路径)处于System.Web.Compilation.BuildManager.GetVPathBuildResultInternal(VirtualPat) h virtualPath,Boolean noBuild,Boolean allowCrossApp,Boolean allowBuildInPrecompile,Boolean throwIfNotFound,Boolean ensureIsUpToDate)at System.Web.Compilation.BuildManager.GetVPathBuildResultWithNoAssert(HttpContext context,VirtualPath virtualPath,Boolean noBuild,Boolean allowCrossApp,Boolean allowBuildInPrecompile,Boolean throwIfNotFound,Boolean ensureIsUpToDate)在System.Web.Compilation.BuildManager.GetVPathBuildResult(HttpContext context,VirtualPath virtualPath,Boolean noBuild,Boolean allowCrossApp,Boolean allowBuildInPrecompile,Boolean ensureIsUpToDate)处于DotNetNuke.UI.ControlUtilities的System.Web.UI.TemplateControl.LoadControl(VirtualPath virtualPath)。 DotConNuke.UI.Modules.ModuleHost.LoadModuleControl()---内部异常堆栈跟踪结束的LoadControl [T](TemplateControl containerControl,String ControlSrc)---
这是DNN,但这种情况偶尔发生在Sitefinity等其他.net应用程序中,虽然我可以看到错误是什么,但它并没有告诉我从哪里开始查找
谢谢:)
答案 0 :(得分:8)
实际例外是在第一行。 'DotNetNuke.Services.Exceptions.ModuleLoadException'后跟异常消息。
文本的其余部分主要是堆栈跟踪。如果从几个地方调用抛出错误的方法,并且您想知道哪一个,这很有用。您在跟踪中读取的内容越远,您在调用链中获得的内容越高。所以TemplateParser.ProcessError由ParseStringInternal调用,由ParseString调用,依此类推。
现在针对手头的问题,它说服务器标签格式不正确。我对DNN并不熟悉,但快速谷歌上的消息和异常名称发现: http://www.dotnetnuke.com/Resources/Blogs/EntryId/1496/The-server-tag-is-not-well-formed-oh-my.aspx
如果文章被移动,则包含此解决方案:
此错误是由位于名为EditEntry.ascx的文件中的无效追踪引起的。这个角色有一个重点导致崩溃。 对于完全公开,这个(现在)无效的字符已经在代码中存在了很长一段时间,可能是自第一次公开发布以来。
打开DesktopModules \ Blog \ EditEntry.ascx 转到第21行 寻找匹配“ResourcêKey”的字符串(注意时髦的“e”) 将“ê”替换为“e” 保存并上传 此修复程序将使您再次启动并运行。
答案 1 :(得分:2)
这篇文章中解释了一个很好的技巧 -
它告诉我们将global.asax文件更新为行号。
void Application_Error(object sender, EventArgs e)
{
// Code that runs when an unhandled error occurs
Exception ex = Server.GetLastError();
// get line number from ASPX parse error
System.Web.HttpParseException httpParseEx = ex as System.Web.HttpParseException;
if (httpParseEx != null)
{
String lineNumber = "Line number: " + httpParseEx.Line;
}
}
答案 2 :(得分:1)
这称为callstack。发生问题时,许多调试器或编程环境都会显示此信息。通常,您要做的是从callstack的顶部开始,并确定哪些是“系统”调用,哪些是更有可能成为问题根源的调用。在这种情况下:
DotNetNuke.UI.Modules.ModuleHost.LoadModuleControl()中的DotNetNuke.UI.ControlUtilities.LoadControl [T](TemplateControl containerControl,String ControlSrc)最有可能是问题的根源。