当我使用它们时,我应该在Owin的上下文中处理这些流吗?

时间:2015-11-06 13:52:39

标签: owin katana

我正在使用WebApp.Start()创建一个非常简单的自托管端点的Owin中间件;

要写入响应流,我有以下形式的代码:

var writer = new StreamWriter(context.Response.Body, Encoding.UTF8);
serialiser.Serialize(writer, output);
writer.Flush();

我应该处置作家还是context.Response.Body?通常我在所有地方都有using个语句,但我没有实例化响应流,而且我有一个模糊的回忆,认为处理是实例化IDisposable的组件的责任。

1 个答案:

答案 0 :(得分:2)

不,服务器拥有这些流,并会在请求结束时清理它们。

http://owin.org/html/spec/owin-1.0.html

3.4 “应用程序不应该关闭或处理给定的流,除非它已经完全消耗了请求体。流所有者(例如服务器或中间件)必须在应用程序委托的任务完成后进行任何必要的清理。”

3.5 “应用程序不应该关闭或处理给定的流,因为中间件可能附加额外的数据。流所有者(例如服务器或中间件)必须在应用程序委托的任务完成后执行任何必要的清理。”