【发布时间】:2012-10-31 16:29:45
【问题描述】:
我有一个 Web 应用程序可以在我的开发机器上正常运行,但是当我将它安装到另一台机器上时,它只是在我添加到 DLL 中的一种新方法上崩溃。
更深入地研究它,当它们在我的开发机器上时,安装程序不会获取 PDB 文件。所以我试图在开发机器上删除它们,我的新方法同样崩溃。其他方法根本不会崩溃。
我的方法只是抛出一个“NullPointerException”,当 PDB 文件存在时,它永远不会出现。
我知道 PDB 文件的用途(我在发布之前搜索了这个网站),但这不应该改变应用程序的工作方式。应该吗?
编辑:忘了说所有都在<release> 而不是<debug>。这就是我质疑 PDB 文件的原因。
【问题讨论】:
-
您正在运行二进制文件的发行版吗?我认为运行调试分发不需要 PDB 文件,但这是一个想法。您的 web.config 文件是否也设置为允许调试?如果你打开了堆栈跟踪支持,我想知道 IIS 是否需要 PDB。
-
环境之间可能存在更多差异 - 是什么让您认为这是由于缺少 PDB 造成的?如果您删除开发机器上的 PDB,它会崩溃吗?如果将 PDB 放在有问题的机器上,它不会崩溃吗?
-
留在开发机器上,我的 IIS 指向我的工作文件夹。所以我将文件夹复制到开发机器上的不同位置,在 IIS 中进行设置。工作正常,然后我删除 PDB 文件并在 web.config 中设置
并在新方法上崩溃。 -
NullPointerException 不是 .NET/IIS 原生的。您必须收集崩溃堆栈跟踪。我怀疑您的代码库确实要求在后台提供 PDB 文件,因此您必须仔细调试。其他人提到的常识可能不适用于您的案例。