【问题标题】:Shoud I close the Stream in WCF REST Service?我应该关闭 WCF REST 服务中的流吗?
【发布时间】:2015-03-27 11:59:22
【问题描述】:

我有一些带有服务器端方法和传递给它的流变量的 WCF 休息服务。

我的问题是:我应该在本地保存文件后关闭流吗?

void ImportFile(Stream stream)
{
    // Reading stream...
    stream.Close(); // ??? is it really needed ???
}

【问题讨论】:

    标签: c# wcf rest azure stream


    【解决方案1】:

    IT 取决于流的来源。如果它是您创建的流,那么 Coder1409 的答案是正确的 - 您应该将流创建语句包装在 using 命令中。但是,如果由于您特别提到您在 Rest Service 中,则该流是一个 HTTP 请求流,它是一个只进只读流,它的生命周期将由您从中获取它的 HTTP 上下文控制。

    【讨论】:

    • 流来自休息客户端。我不确定它的请求流是否。
    • 如果一个外部实体(在您的直接代码之外)向您传递了一个流,并且您没有在您的方法中为传递者提供一个标志来指示他们是否希望在返回时关闭该流,这可能是一个好主意不要关闭流。允许传递实体控制它创建并传递给您的流的生命周期。任意关闭您的代码未创建的流是不好的形式,您不知道调用者是否需要该流保持打开以供将来调用。
    【解决方案2】:

    你应该使用 using 语句,它会在你完成后处理你的流

    使用(流) {

    //代码在这里

    }

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多