2015-05-19 8 views
6

Sto provando a utilizzare OWIN all'API Web Self-Host mentre eseguo i miei test e voglio avviarlo in BeforeEach e fermarsi nei metodi AfterEach.Dispensare manualmente OWIN WebApp

Tutti gli esempi, che ho trovato suggerisce di utilizzare la parola chiave using, ad es.

using (WebApp.Start<Startup>(url: baseAddress)) 
{ 
    ... 
} 

Ma nel mio caso non aiuta.

ho cercato di fare in questo modo:

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(); 
} 

Ma per qualche ragione si chiama Dispose metodo UnityResolver classe in tanto sono stackoverflow... eccezione.

Come devo disporre correttamente l'host OWIN?

+0

Cosa intendi con "nel mio caso non è stato d'aiuto"? –

+1

@DavidL Voglio dire, che non funzionerà se metto il blocco 'using' nel metodo' BeforeEach'. Immagino che prima di eseguire ogni test avvierà l'host e lo interromperà immediatamente. E voglio fermarlo nel metodo 'AfterEach'. – Andrew

+1

Potresti pubblicare il codice della classe 'OwinStartup'? Il problema potrebbe essere lì, poiché la tua implementazione sembra OK. – drax

risposta

0

Come già indicato @drax nei commenti, l'implementazione di dispose è corretta.

Il problema era con la mia implementazione interna nella classe UnityResolver, che è stata avviata nella classe OwinStartup.

Tuttavia ho affrontato alcune altre limitazioni relative a OAuth Authorization Server con Owin, quindi ho deciso di non complicare eccessivamente il mio codice e abbandonare le cose di Owin. Almeno per ora.

+0

Cosa intendi per implementazione interna di UnityResolver? Sto avendo un problema simile ed è per questo che lo sto chiedendo. – programmingheadaches

+0

@programmingheadaches Beh, la mia classe UnityResolver ha avuto il metodo 'Dispose' con una certa logica all'interno e questo metodo è stato chiamato al posto della mia implementazione di owin dispose. – Andrew