手动处理OWIN WebApp

And*_*rew 6 c# unity-container asp.net-web-api owin asp.net-web-api2

我正在尝试在运行测试时使用OWIN自我主机Web API,我想启动它BeforeEach并停止AfterEach方法.

我发现的所有示例都建议使用using关键字,例如

using (WebApp.Start<Startup>(url: baseAddress)) 
{ 
   ...
} 
Run Code Online (Sandbox Code Playgroud)

但就我而言,它没有帮助.

我试着这样做:

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();
}
Run Code Online (Sandbox Code Playgroud)

但由于某种原因,它调用类的Dispose方法,UnityResolver然后我得到stackoverflow...异常.

我该如何妥善处理OWIN主机?

And*_*rew 0

正如 @drax 已经在评论中指出的那样 - 我的 dispose 实现是正确的

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

然而,我面临着与 Owin 的 OAuth 授权服务器相关的一些其他限制,因此我决定不要使我的代码过于复杂并放弃 Owin 的东西。最起码到现在。