3

我开发了一个 .NET 2.0 扩展,作为第三方应用程序的插件。在除 Citrix 之外的任何设备上运行时,一切都运行良好。当作为已发布的应用程序在 Citrix 上运行时,扩展会随机崩溃,这也会导致 3rd 方应用程序崩溃。

我打开了一个转储文件,发现一条异常消息被报告:

线程试图读取或写入它没有适当访问权限的虚拟地址。

我对谷歌的运气并不好。该应用程序确实使用了线程,我怀疑上述情况发生在哪里,但究竟在哪里是个谜。如果我在 citrix 服务器上本地运行扩展程序(即不是作为已发布的应用程序),那么它工作正常。

由于问题的一般性质,我不希望在这里得到答案(如果有人这样做,那就太好了!)但是如果有人能指出我帮助解决问题或描述错误消息的方向,我将非常感激。

谢谢,

4

2 回答 2

3

错误消息的性质使其不太可能是 .NET 2.0 代码的问题。那是因为 .NET 甚至不允许您尝试读/写它不应该的内存。

  • 检查您的扩展程序中是否有任何unsafe代码。这种性质的代码可能能够绕过 CLR 通常执行的验证检查。
  • 检查您的扩展代码是否使用任何非托管代码(COM 或 P/Invoke)。那里可能会产生错误。
  • .NET CLR 中可能存在导致在 Citrix 环境中运行时出现问题的错误。

我要做的第一件事是分析该转储文件以查看故障发生在哪个模块中。您可以下载Windows 调试工具来协助完成这项工作。

于 2010-07-30T14:21:10.653 回答
2

我不知道这是否会有所帮助。

使用 Schneider Unity Pro 打开项目时,我收到了相同的消息。经过冗长而漫长的消除过程后,问题被隔离到启用了“不保留最近打开的文档的历史记录”策略。

于 2012-05-19T00:47:06.823 回答