WebMethodAttribute.BufferResponse 屬性

定義

取得或設定這個要求的回應是否緩衝。

public bool BufferResponse { get; set; }

屬性值

Boolean

如果緩衝這個要求的回應,則為 true,否則為 false。 預設為 true

範例

下列程式碼範例會將 BufferResponse 屬性設定為 false ,並將文字檔的串流處理回用戶端。 此程式碼範例示範如何使用實 IEnumerable 作 介面的類別,將大量資料串流回用戶端。

<%@WebService class="Streaming" language="C#"%>

using System;
using System.IO;
using System.Collections;
using System.Xml.Serialization;
using System.Web.Services;
using System.Web.Services.Protocols;

public class Streaming {

    [WebMethod(BufferResponse=false)]
    public TextFile GetTextFile(string filename) {
        return new TextFile(filename);
    }

    [WebMethod]
    public void CreateTextFile(TextFile contents) {
        contents.Close();
    }

}

public class TextFile {
    public string filename;
    private TextFileReaderWriter readerWriter;

    public TextFile() {
    }

    public TextFile(string filename) {
        this.filename = filename;
    }

    [XmlArrayItem("line")]
    public TextFileReaderWriter contents {
        get {
            readerWriter = new TextFileReaderWriter(filename);
            return readerWriter;
        }
    }

    public void Close() {
        if (readerWriter != null) readerWriter.Close();
    }
}

public class TextFileReaderWriter : IEnumerable {

    public string Filename;
    private StreamWriter writer;

    public TextFileReaderWriter() {
    }

    public TextFileReaderWriter(string filename) {
        Filename = filename;
    }

    public TextFileEnumerator GetEnumerator() {
        StreamReader reader = new StreamReader(Filename);
        return new TextFileEnumerator(reader);
    }

    IEnumerator IEnumerable.GetEnumerator() {
        return GetEnumerator();
    }

    public void Add(string line) {
        if (writer == null)
            writer = new StreamWriter(Filename);
        writer.WriteLine(line);
    }

    public void Close() {
        if (writer != null) writer.Close();
    }

}

public class TextFileEnumerator : IEnumerator {
    private string currentLine;
    private StreamReader reader;

    public TextFileEnumerator(StreamReader reader) {
        this.reader = reader;
    }

    public bool MoveNext() {
        currentLine = reader.ReadLine();
        if (currentLine == null) {
            reader.Close();
            return false;
        }
        else
            return true;
    }

    public void Reset() {
        reader.BaseStream.Position = 0;
    }

    public string Current {
        get {
            return currentLine;
        }
    }

    object IEnumerator.Current {
        get {
            return Current;
        }
    }
}

備註

將 設定 BufferResponsetrue ,會將 XML Web 服務方法的回應序列化為記憶體緩衝區,直到回應完全序列化或緩衝區已滿為止。 緩衝處理回應之後,它會透過網路傳回至 XML Web 服務用戶端。 當 為 falseBufferResponse ,XML Web 服務方法的回應會在序列化時傳回用戶端。 一般而言,如果您知道 XML Web 服務方法將大量資料傳回給用戶端,您只想要將 設定 BufferResponse false 為 。 對於較小的資料量,XML Web 服務效能較適合使用 BufferResponse true

當 為 falseBufferResponse ,XML Web 服務方法會停用 SOAP 延伸模組。

適用於

產品 版本
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8