我正在开发一个监视打印队列的应用程序。为此,它需要能够管理它们。当我运行应用程序进行调试时,该应用程序运行良好,但是,当我尝试对该类进行单元测试时,会引发安全异常。有没有办法让Visual Studio单元测试具有更高的安全级别?
PrintQueue q = new PrintQueue(server, QueueName,
PrintSystemDesiredAccess.AdministratePrinter);
抛出异常:
尝试通过安全透明方法“MS.Internal.PrintWin32Thunk.PrinterDefaults.Dispose(Boolean)”访问安全关键方法“MS.Internal.PrintWin32Thunk.PrinterDefaults.InternalDispose(Boolean)”失败。
同样,在单元测试之外使用时,不会引发异常,并且该类按预期工作。我尝试以管理员身份运行 Visual Studio,但仍然收到异常。
更新:看来我无法测试这个课程。包含它的类库已经用.NET 3.5编写,这就是为什么在使用该类时不会发生异常。我做了一些进一步的实验,发现即使这个类库面向 .NET 3.5,抛出异常的类也不能由面向 .NET 4.0 的应用程序使用。 Visual Studio 测试项目需要以 .NET 4.0 为目标。
你的问题是probably与此已知错误相关:http://connect.microsoft.com/VisualStudio/feedback/details/552520/methodaccessexception-when-printqueuecollection-dispose http://connect.microsoft.com/VisualStudio/feedback/details/552520/methodaccessexception-when-printqueuecollection-disposed
那里列出了两种解决方法,其中之一是针对 .NET 3.5 而不是 4.0。
您确定在调试时不会在终结器线程上引发异常吗?您没有说明何时处理它。如果显式调用 dispose 然后 debug,是否会出现异常?例如。
PrintQueue q = new PrintQueue(server, QueueName,
PrintSystemDesiredAccess.AdministratePrinter);
q.Dispose();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)