我的ASP.NET应用程序有问题。它已经开发了大约一年左右,没有禁用调试模式。我想测试它是否在没有调试的情况下工作,但是,当我将debug=设置为“true”时,它工作得很好。
当我第一次尝试打开应用程序时,会出现“服务器不可用”错误。在事件日志中,我有两个错误:
我的IIS版本是5.1,运行在Windows上。
如有任何建议,我将不胜感激。
更新:在web.config中进行调试模式的更改
发布于 2009-03-03 13:22:39
您所描述的崩溃发生在kernel32.dll中--这可能表明这不是托管代码中的崩溃,而是.NET引擎本身(ugh)中的崩溃--在这种情况下,诸如验证预编译器路径等内容不会产生任何积极的结果(IMHO)。
我建议你尝试通过“二进制搜索”(针对罪魁祸首)解决这个问题:-)。作为第一个“迭代”,我将创建一个普通的aspx页面(/Test.aspx),禁用调试模式并尝试点击页面(没有代码隐藏,只有基本的带有标题的HTML和Hello )。这将验证ASP.NET是否已安装并在您的IIS服务器上正常工作。
如果这个最简单的页面再次失败,我建议使用@JSC在注释中提到的内容:在IIS上重新注册ASP.NET:
rem (reregister ASP.NET in IIS)
rem (run as administrator!)
%SystemRoot%\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis.exe -i一旦最简单的页面运行,我会添加简单的代码隐藏,尝试一下。一旦代码隐藏运行,我将尝试通过删除所有代码更新应用程序的真正开始页面,只留下标记并尝试点击页面-是的,它看起来很可怕,但至少它可能显示:-)。之后,我只尝试添加初始化逻辑,看看它是如何进行的.
本质上,您需要在应用程序中找到导致崩溃的任何“东西”。我猜想这两个极端是:标记+没有代码背后的= works,标记+后面的所有代码=崩溃;二进制搜索“方法”将允许您的代码的一半,看看它是否仍然显示(我们现在不担心功能-它的行为不会像预期的那样)。如果没有显示,请禁用前半部分的后半部分(即只有四分之一的代码处于活动状态),尝试一下。一直往前走,直到你把搜索范围限制在有问题的地方.
我建议的另一种方法是在虚拟机上安装服务器2003 (IIS6) /服务器2008 (IIS7) -- VirtualPC、VMWare、VirtualBox (如果您无法访问服务器映像的MSDN下载,可以随时下载试用版-服务器2008试用版60天,外加两次“重置”)。在虚拟机中安装干净的OS之后,尝试部署您的应用程序并查看它在该环境中的行为。
发布于 2009-02-27 17:11:00
我建议您根据包含非调试代码的断言检查代码。我多次犯了编写代码的常见错误,如下所示:
断言(doSomeCrucialOperation());
在发布模式下编译时,不编译带有操作调用的整个断言。
发布于 2009-02-27 17:53:34
确保您没有检查调试环境的任何条件代码。有一次我花了几天的时间去追踪一个随机的撞车虫..。最后遇到了这样的事情:
#ifdef DEBUG
threadPoolCount = 1;
#else
threadPoolCount = 16;猜怎么着..。是个线程错误!在C#中,它看起来更像这样:
[Conditional("Debug")]https://stackoverflow.com/questions/594505
复制相似问题