我正在尝试在运行测试时使用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();
}
但出于某种原因,它调用Dispose
类的UnityResolver
方法,然后我得到stackoverflow...
例外。
我应该如何妥善处理OWIN主机?
答案 0 :(得分:0)
正如@drax已经在评论中说明的那样 - 我的部署实施正确。
问题在于我在UnityResolver类中的内部实现,该类是在OwinStartup
类中启动的。
但是我遇到了与Owin的OAuth授权服务器相关的其他一些限制,所以我决定不要使我的代码过于复杂并且放弃Owin的东西。至少现在。