手动配置 OWIN WebApp

Manually dispose OWIN WebApp

我正在尝试使用 OWIN 自托管网站 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 class 的 Dispose 方法,然后我得到 Whosebug... 异常。

如何正确配置OWIN主机?

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

问题出在我在 UnityResolver class 中的内部实现,它是在 OwinStartup class 中启动的。

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