【发布时间】:2015-07-31 16:34:09
【问题描述】:
我在运行测试时尝试使用 OWIN 来自托管 Web API,我想在 BeforeEach 中启动它并在 AfterEach 方法中停止。
我发现的所有示例都建议使用 using 关键字,例如
using (WebApp.Start<Startup>(url: baseAddress))
{
...
}
但在我的情况下它没有帮助。
我试着这样做:
private IDisposable _webApp;
public override void BeforeEach()
{
_webApp = WebApp.Start<OwinStartup>("http://localhost:99999/");
}
public override void AfterEach()
{
base.AfterEach();
if (_webApp != null)
_webApp.Dispose();
}
但由于某种原因,它调用了UnityResolver 类的Dispose 方法,然后我得到stackoverflow... 异常。
应该如何正确处置OWIN主机?
【问题讨论】:
-
“在我的情况下它没有帮助”是什么意思?
-
@DavidL 我的意思是,如果我将
using块放入BeforeEach方法中,它将不起作用。我猜,在运行每个测试之前,它会启动主机并立即停止它。我想在AfterEach方法中停止它。 -
你能发布
OwinStartup类的代码吗?问题可能就在那里,因为您的实现看起来不错。 -
@drax 我遇到了类似的问题。你这是什么原因造成的?
标签: c# asp.net-web-api unity-container asp.net-web-api2 owin