我正在开发一个监控打印队列的应用程序。要做到这一点,它需要能够管理它们。当我运行应用程序进行调试时,它运行得很好,但是,当我尝试对类进行单元测试时,却抛出了一个安全异常。有没有办法使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。
发布于 2011-07-10 02:36:06
您的问题可能与这个已知的错误有关:http://connect.microsoft.com/VisualStudio/feedback/details/552520/methodaccessexception-when-printqueuecollection-disposed
这里列出了两种解决方法,其中一种是针对.NET 3.5而不是4.0。
是否确定在调试时不会在终结器线程上引发异常?您不需要声明它何时被释放。如果显式调用dispose然后调试,是否会出现异常?例如。
PrintQueue q = new PrintQueue(server, QueueName,
PrintSystemDesiredAccess.AdministratePrinter);
q.Dispose();https://stackoverflow.com/questions/6635616
复制相似问题