手动处理OWIN WebApp

时间:2015-05-19 17:42:43

标签: c# asp.net-web-api unity-container asp.net-web-api2 owin

我正在尝试在运行测试时使用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主机?

1 个答案:

答案 0 :(得分:0)

正如@drax已经在评论中说明的那样 - 我的部署实施正确

问题在于我在UnityResolver类中的内部实现,该类是在OwinStartup类中启动的。

但是我遇到了与Owin的OAuth授权服务器相关的其他一些限制,所以我决定不要使我的代码过于复杂并且放弃Owin的东西。至少现在。