我正在使用WebApp.Start()创建一个非常简单的自托管端点的Owin中间件;
要写入响应流,我有以下形式的代码:
var writer = new StreamWriter(context.Response.Body, Encoding.UTF8);
serialiser.Serialize(writer, output);
writer.Flush();
我应该处置作家还是context.Response.Body
?通常我在所有地方都有using
个语句,但我没有实例化响应流,而且我有一个模糊的回忆,认为处理是实例化IDisposable的组件的责任。
答案 0 :(得分:2)
不,服务器拥有这些流,并会在请求结束时清理它们。
http://owin.org/html/spec/owin-1.0.html
3.4 “应用程序不应该关闭或处理给定的流,除非它已经完全消耗了请求体。流所有者(例如服务器或中间件)必须在应用程序委托的任务完成后进行任何必要的清理。”
3.5 “应用程序不应该关闭或处理给定的流,因为中间件可能附加额外的数据。流所有者(例如服务器或中间件)必须在应用程序委托的任务完成后执行任何必要的清理。”