Ho una classe DocumentGenerator
che include uno MemoryStream
. Quindi ho implementato IDisposable
sulla classe.Come posso disporre del filestream durante l'implementazione di un download di file in ASP.NET?
Non riesco a vedere come/dove posso possibilmente disporlo però.
Questo è il mio codice corrente, che esegue un download di file in MVC:
using (DocumentGenerator dg = DocumentGenerator.OpenTemplate(path))
{
/* some document manipulation with the
DocumentGenerator goes here ...*/
return File(dg.GetDocumentStream(), "text/plain", filename);
}
Questo errori come il flusso è chiuso/disposti prima che il controllore ha finito con esso. Come posso assicurarmi che le mie risorse siano disposte correttamente in questa situazione?
MODIFICA: La mia implementazione di IDisposable
al momento dispone solo dello MemoryStream
. So che non è una corretta implementazione, l'ho solo usato come test. C'è qualcosa di diverso che potrei fare qui per farlo funzionare?
public void Dispose()
{
_ms.Dispose();
_ms = null;
}
Puoi mostrarci l'implementazione di IDisposable, per favore? – DHN
È '_ms' lo stesso che si ottiene dopo aver chiamato' GetDocumentStream'? –
@ Jordão: sì, è corretto, quindi il problema. – fearofawhackplanet