我们的应用程序是一个混合的 Win32 非托管应用程序和一个 .NET 2.0 托管应用程序。Win32 部分是主要的可执行文件,它有时会加载和托管 .NET 2.0 运行时并加载一些托管模块以打开新的 winforms 窗口。
我们遇到了一些 CASPOL 类型的问题,但今天我们遇到了一个非常奇怪的问题,我希望有人能给我一些指示或想法,或者基本上只是任何真正的东西,这会引发一些有助于帮助的事情我们解决这个问题。
在通过 citrix 访问的服务器上,如果应用程序文件位于当前登录用户(服务器/域管理员)桌面上的目录中,则程序运行良好。.NET 窗口按预期打开。
但是,如果我们将目录移动到同一个磁盘的根目录,这是服务器中的一个物理磁盘(因此没有 SAN 映射或任何会触发 CASPOL 命令的东西,据我所知)并保持其他一切相同,相同的用户,相同的配置等,当我们尝试调用 .NET 窗口时,应用程序会静默崩溃。它通过消失的方式崩溃,这表明它可能类似于堆栈溢出。我们正在考虑将日志记录添加到应用程序的某些部分,以便能够弄清楚发生了什么以及发生在哪里,但我也在这里发布了这个问题。
到目前为止,我们已经验证了 CASPOL 访问列表中没有异常,NGEN 缓存中也没有异常(我在想,如果服务器所有者曾经使用过它,我想可能是之前损坏的图像),并且在GAC(我们不将 GAC 用于程序集)。
总结:
- 如果程序从 U:\Documents and Settings\USERNAME\Desktop\directory 运行,它可以工作
- 如果从 U:\directory 运行,则不会
- U:是服务器中的物理磁盘
- NGEN 或 GAC 缓存中没有明显的异常
- 安装了正确的 .NET 运行时,安装了我们应用程序的正确文件(如果从桌面位置运行,确实可以正常工作)
有任何可能有帮助的人吗?
编辑:问题在这里用不同/其他信息重新询问,并“解决”。