Dot-Net
流作為 WCF 中的返回值 - 誰處理它?
假設我有以下 WCF 實現:
public Stream Download(string path) { FileStream stream = new FileStream(path, FileMode.Open, FileAccess.Read); return stream; }誰負責處理返回的值?畢竟,可能會發生網路故障,因此消費者可能無法處理它。
服務負責關閉流,除非您更改預設行為,否則它會自動執行(始終使用預設值的行為)。如果您設置
OperationBehavior.AutoDisposeParameters為,則false必須為處理程序註冊處理程序並在處理程序中處理流,如此處OperationContext.OperationCompleted所述。客戶端無法關閉流,因為客戶端有不同的流 - 您沒有傳遞對流的引用或對文件處理程序的引用。內部文件內容被複製到傳輸和客戶端在它自己的流實例中處理它(他負責處理它)。