我有一个asp.net(3.5)web应用程序。 在一个页面中,我使用了一个非托管C库(一个模拟器),它根据一些输入生成一组结果。奇怪的问题System.AccessViolationException
当我在web.config(发布模式)中设置debug="false"
时,该调用将导致System.AccessViolationException
。如果我在调试器中,或者至少在web.config中设置了debug="true"
,那么将出现该异常从不出现。
由于错误的性质,我将呼叫放入try-catch
以记录异常,然后不会出现异常!
在调试模式下和/或在try-catch时,是否存在受保护内存空间上的一些神奇工作?
这真的很奇怪。不是我迷信,而是过去奇怪的事情发生在我身上。这就是为什么我远离Web编程的原因...... AccessViolationException可能是由于您的应用程序没有权限使用的磁盘访问或其他资源访问。它在您调试时可能是因为它在调试期间分配了更多的权限。也许作为用户,您可以授予更多权限给应用程序,但匿名用户没有太多权限,因此失败。 – 2011-03-18 15:48:24
你知道哪行代码会抛出异常吗?还是它出现在哪里?后者通常是与框架相关的问题引起的,并且通常在加载过程中发生,至少对我而言。您的模拟器DLL可能不在具有权限的文件夹中,或者模拟器在加载过程中尝试在没有权限的情况下读取/写入。 – 2011-03-18 15:53:05
以及我不知道C应用程序内的代码行。它在内存操作中使用,并使用应用程序有权访问的领域内存在的小文件(App_Data)。如果只是调试模式问题,我会认为它是与权限相关的,但try-catch现象使我认为这是与框架有关的 – Jaguar 2011-03-18 17:16:16