我有一个应用程序,我正在尝试使用CLRProfiler进行分析,该应用程序是用.NET 4.0和在.NET Framework 4客户端配置文件上运行的WPF编写的。应用程序在启动后不久加载一个数据文件,该文件的位置位于 app.config 中(因此在程序运行时不会以交互方式选择该文件)。当应用程序从Visual Studio或Windows资源管理器启动时,一切正常。
但是,从 CLRProfiler 启动应用程序时,应用程序崩溃,UnauthorizedAccessException
尝试加载该文件。
为了解决这个问题,我向自己、域用户和所有人授予了对该文件的完全控制权限,但问题仍在继续。监视任务管理器时,显示已在我的用户 ID 下启动的短期进程。
有谁知道如何使用 CLRProfiler 解决此问题?
最终,这被证明是两个问题的结合:
-
不以管理员身份运行。
-
上面引用的数据文件具有在配置文件中指定的路径,但该路径是相对的。当 CLRProfiler 启动应用程序时,工作目录仍然是探查器的工作目录,而不是切换到正在分析的应用程序。由于我以非特权运行,因此无法打开数据文件实际上表现为
UnauthorizedException
因为应用程序没有权限在安装探查器的文件夹中进行root操作。
在纠正了这两个问题(第一个通过以管理员身份运行,第二个通过更改配置文件以使用绝对路径)后,问题消失了。