.net 问题:。网络代码从同一磁盘上的一个目录运行,而不是从另一个目录运行
我们的应用程序是Win32非托管应用程序和.NET 2.0托管应用程序的混合。Win32部分是主可执行文件,它在某些时候加载并托管.NET 2.0运行时,并加载一些托管模块以打开新的winforms窗口 我们也遇到过CASPOL类型的问题,但今天我们遇到了一个非常奇怪的问题,我希望有人能给我一些建议或想法,或者基本上是任何真正的东西,这将触发一些火花,帮助我们解决这个问题 在通过citrix访问的服务器上,如果应用程序文件位于当前登录用户(服务器/域管理员)桌面上的目录中,则程序运行正常。.NET窗口按预期打开 但是,如果我们将目录移动到同一磁盘的根目录,这是服务器中的一个物理磁盘(因此,据我所知,没有SAN映射或任何会触发CASPOL命令的东西),并使其他所有内容保持相同、相同的用户、相同的配置等,那么当我们尝试调用.NET windows时,应用程序会自动崩溃。它以消失的方式崩溃,这表明它可能有点像堆栈溢出。我们正在考虑将日志添加到应用程序的某些部分,以便能够了解发生了什么以及发生在哪里,但我也在这里发布了这个问题 到目前为止,我们已经验证了CASPOL访问列表中没有异常,NGEN缓存中没有异常(我在想,如果服务器所有者使用过它,可能以前的映像已经损坏),GAC中没有异常(我们不使用GAC处理程序集) 总结:.net 问题:。网络代码从同一磁盘上的一个目录运行,而不是从另一个目录运行,.net,crash,directory,citrix,.net,Crash,Directory,Citrix,我们的应用程序是Win32非托管应用程序和.NET 2.0托管应用程序的混合。Win32部分是主可执行文件,它在某些时候加载并托管.NET 2.0运行时,并加载一些托管模块以打开新的winforms窗口 我们也遇到过CASPOL类型的问题,但今天我们遇到了一个非常奇怪的问题,我希望有人能给我一些建议或想法,或者基本上是任何真正的东西,这将触发一些火花,帮助我们解决这个问题 在通过citrix访问的服务器上,如果应用程序文件位于当前登录用户(服务器/域管理员)桌面上的目录中,则程序运行正常。.NE
- 如果程序是从U:\Documents and Settings\USERNAME\Desktop\directory运行的,则它可以工作
- 如果它是从U:\目录运行的,则不会
- U:是服务器中的物理磁盘
- NGEN或GAC缓存中没有明显的异常
- 安装了正确的.NET运行时,为我们的应用程序安装了正确的文件(如果从桌面位置运行,确实可以正常工作)
编辑:不同/其他信息的问题,并“解决”。我的第一个尝试是从MS Sysinternals运行process monitor,并查看这两种情况下的调用/结果不同。 也许这会给你一些提示(同一个调用的不同结果,问题运行中的一些错误不是好的…) 您可以从MS下载过程监视器:
我的第一个想法是,您需要确保程序中没有为引用程序集、文件等定义相对/绝对路径,这些路径在移动应用程序根目录时会造成问题。是否可能与用户权限相关?从开始运行以检查。即使它不是直接相关的,该工具也可能会提供一些有用的提示。我很久以前就遇到过这样的问题。经过多次拉扯,我发现了问题
在使用Process.Start()或任何此类调用时要非常小心,因为根据启动方式,它可以使用各种文件夹作为工作环境(当前路径、系统环境等。我不熟悉该程序,我一定会检查它。谢谢!没有这样的相对路径,也没有用于加载程序集的任何自定义解析处理。所有内容都位于一个目录中(某些本地化资源dll除外)。谢谢,我们正在进行这项工作,但它是一个繁忙的服务器,因此我们不确定在其上运行此类核心监控应用程序会产生什么影响。谢谢,但这也不是问题所在。我们在内部托管.NET运行时,因此不存在任何进程。从那里开始,通过双击Windows Expl中的可执行文件来加载程序orer,因此它在两个实例中都使用本地文件夹。