【发布时间】:2010-11-06 05:59:21
【问题描述】:
当我尝试使用我的 VS2008 单元测试项目调用 TraceSource.TraceData 时,我遇到了 Object Disposed 异常。我在下面包含了一个非常小的代码示例,它始终如一地重现了这个问题。我只是在运行我的第一个单元测试后才看到这一点 - 但我有预感,一旦我的网站启动并运行有大量用户,它就会影响我。
这就像在第一次单元测试后关闭了底层流。非常感谢“溢出”大师的任何帮助。
步骤:
1) 创建一个 VS 2008 单元测试项目
2) 使用此代码添加一个类:
namespace TracingError
{
using System.Diagnostics;
using Microsoft.VisualStudio.TestTools.UnitTesting;
[TestClass]
public class UnitTest1
{
public static TraceSource ts = new TraceSource("TraceTest");
[TestMethod]
public void A()
{
ts.TraceEvent(TraceEventType.Information, 1, "Hello from A");
}
[TestMethod]
public void B()
{
ts.TraceEvent(TraceEventType.Information, 1, "Hello from B");
}
}
}
3) 使用以下代码添加 app.config:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.diagnostics>
<sources>
<source name="TraceTest" switchName="SourceSwitch" switchType="System.Diagnostics.SourceSwitch">
<listeners>
<add name="console" type="System.Diagnostics.ConsoleTraceListener" initializeData="false" />
<remove name="Default" />
</listeners>
</source>
</sources>
<switches>
<add name="SourceSwitch" value="Verbose" />
</switches>
<trace autoflush="true" indentsize="4"></trace>
</system.diagnostics>
</configuration>
【问题讨论】:
-
配置>switchType ="System.Diagnostics.SourceSwitch"> initializeData="false" /> -
找到解决方案了吗?我有同样的问题,但仅适用于某些测试(在同一个测试项目中)。许多使用 Trace 的测试都可以正常工作,但有些不能,我不知道为什么......