Sdílet prostřednictvím


HttpListenerResponse.Close Metoda

Definice

Odešle odpověď klientovi a uvolní prostředky uchovávané touto HttpListenerResponse instancí.

Přetížení

Close()

Odešle odpověď klientovi a uvolní prostředky uchovávané touto HttpListenerResponse instancí.

Close(Byte[], Boolean)

Vrátí zadané pole bajtů klientovi a uvolní prostředky držené touto HttpListenerResponse instancí.

Close()

Zdroj:
HttpListenerResponse.Managed.cs
Zdroj:
HttpListenerResponse.Managed.cs
Zdroj:
HttpListenerResponse.Managed.cs

Odešle odpověď klientovi a uvolní prostředky uchovávané touto HttpListenerResponse instancí.

public:
 void Close();
[System.Runtime.Versioning.UnsupportedOSPlatform("browser")]
public void Close ();
public void Close ();
[<System.Runtime.Versioning.UnsupportedOSPlatform("browser")>]
member this.Close : unit -> unit
member this.Close : unit -> unit
Public Sub Close ()
Atributy

Příklady

Následující příklad kódu ukazuje volání této metody k odeslání Forbidden (403) odpověď klientovi.

static string message403;
static HttpListenerResponse preMade403Response;
static void SendBadCertificateResponse(HttpListenerResponse response)
{
    if (preMade403Response == null)
    {
        // Set up an authentication error response template.
        response.StatusCode = (int)HttpStatusCode.Forbidden;
        response.StatusDescription = "403 Forbidden";
        response.ProtocolVersion = new Version("1.1");
        response.SendChunked = false;

        preMade403Response = response;
    }
    else
    {
        response.CopyFrom(preMade403Response);
    }

    // The response body cannot be saved in the template.

    StringBuilder message = new StringBuilder();
    message.Append("<HTML><BODY>");
    message.Append("<p> Error message 403: Access is denied due to a missing or invalid client certificate.</p>");
    message.Append("</BODY></HTML>");
    message403 = message.ToString();

    // Turn the error message into a byte array using the
    // encoding from the response when present.
    System.Text.Encoding encoding = response.ContentEncoding;
    if (encoding == null)
    {
        encoding = System.Text.Encoding.UTF8;
        response.ContentEncoding = encoding;
    }

    byte[] buffer = encoding.GetBytes(message403);
    response.ContentLength64 = buffer.Length;
    // Write the error message.
    System.IO.Stream stream = response.OutputStream;
    stream.Write(buffer, 0, buffer.Length);
    // Send the response.
    response.Close();
}
Private Shared message403 As String
Private Shared preMade403Response As HttpListenerResponse
Private Shared Sub SendBadCertificateResponse(ByVal response As HttpListenerResponse)
    
    If preMade403Response Is Nothing Then
        ' Set up an authentication error response template.
        response.StatusCode = Cint(HttpStatusCode.Forbidden)
        response.StatusDescription = "403 Forbidden"
        response.ProtocolVersion = New Version("1.1")
        response.SendChunked = False
    Else
        response.CopyFrom(preMade403Response) 
    End If
    
    ' The response body cannot be saved in the template.
    Dim message As New StringBuilder()
    message.Append("<HTML><BODY>")
    message.Append("<p> Error message 403: Access is denied due to a missing or invalid client certificate.</p>")
    message.Append("</BODY></HTML>")
    message403 = message.ToString()

    ' Turn the error message into a byte array using the 
    ' encoding from the response when present.
    Dim encoding As System.Text.Encoding = response.ContentEncoding
    If encoding Is Nothing Then
        encoding = System.Text.Encoding.UTF8
        response.ContentEncoding = encoding
    End If

    Dim buffer() As Byte = encoding.GetBytes(message403)
    response.ContentLength64 = buffer.Length
    ' Write the error message.
    Dim stream As System.IO.Stream = response.OutputStream
    stream.Write(buffer, 0, buffer.Length)
    ' Send the response.
    response.Close()
End Sub

Poznámky

Tato metoda zavře stream odpovědi a HttpListenerRequest přidružený k odpovědi.

Viz také

Platí pro

Close(Byte[], Boolean)

Zdroj:
HttpListenerResponse.Managed.cs
Zdroj:
HttpListenerResponse.Managed.cs
Zdroj:
HttpListenerResponse.Managed.cs

Vrátí zadané pole bajtů klientovi a uvolní prostředky držené touto HttpListenerResponse instancí.

public:
 void Close(cli::array <System::Byte> ^ responseEntity, bool willBlock);
[System.Runtime.Versioning.UnsupportedOSPlatform("browser")]
public void Close (byte[] responseEntity, bool willBlock);
public void Close (byte[] responseEntity, bool willBlock);
[<System.Runtime.Versioning.UnsupportedOSPlatform("browser")>]
member this.Close : byte[] * bool -> unit
member this.Close : byte[] * bool -> unit
Public Sub Close (responseEntity As Byte(), willBlock As Boolean)

Parametry

responseEntity
Byte[]

Pole Byte obsahující odpověď, která se má odeslat klientovi.

willBlock
Boolean

trueblokovat provádění při vyprazdňování datového proudu do klienta; v opačném případě . false

Atributy

Výjimky

responseEntity je null.

Tento objekt je zavřený.

Příklady

Následující příklad kódu ukazuje volání této metody.

// This example requires the System and System.Net namespaces.
public static void SimpleListenerExample2(string[] prefixes)
{
    // URI prefixes are required,
    // for example "http://contoso.com:8080/index/".
    if (prefixes == null || prefixes.Length == 0)
      throw new ArgumentException("prefixes");

    // Create a listener.
    HttpListener listener = new HttpListener();
    // Add the prefixes.
    foreach (string s in prefixes)
    {
        listener.Prefixes.Add(s);
    }
    listener.Start();
    Console.WriteLine("Listening...");
    // Note: The GetContext method blocks while waiting for a request.
    HttpListenerContext context = listener.GetContext();
    HttpListenerRequest request = context.Request;
    // Obtain a response object.
    HttpListenerResponse response = context.Response;
    // Construct a response.
    string responseString = "<HTML><BODY> Hello world!</BODY></HTML>";
    byte[] buffer = System.Text.Encoding.UTF8.GetBytes(responseString);
    // Get a response stream and write the response to it.
    response.ContentLength64 = buffer.Length;
    // Demonstrate using the close overload that takes an
    // entity body.
    // Specify true to block while data is transmitted.
    response.Close(buffer, true);
    listener.Stop();
}
Public Shared Sub SimpleListenerExample2(ByVal prefixes As String())
    ' URI prefixes are required,
    ' for example "http://contoso.com:8080/index/".
    If prefixes Is Nothing Or prefixes.Length = 0 Then
        Throw New ArgumentException("prefixes")
    End If

    ' Create a listener
    Dim listener As HttpListener = New HttpListener()
    ' Add the prefixes
    For Each s As String In prefixes
        listener.Prefixes.Add(s)
    Next

    listener.Start()
    Console.WriteLine("Listening...")
    ' Note: The GetContext method blocks while waiting for a request. 
    Dim context As HttpListenerContext = listener.GetContext()
    Dim request As HttpListenerRequest = context.Request
    ' Obtain a response object.
    Dim response As HttpListenerResponse = context.Response
    ' Construct a response
    Dim responseString As String = "<HTML><BODY> Hello world!</BODY></HTML>"
    Dim buffer As Byte() = System.Text.Encoding.UTF8.GetBytes(responseString)
    ' Get a response stream and write the response to it.
    response.ContentLength64 = buffer.Length
    ' Demonstrate using the close overload that takes an 
    ' entity body.
    ' Specify true to block while data Is transmitted.
    response.Close(buffer, True)
    listener.Stop()
End Sub

Poznámky

Pokud odesíláte data těla s odpovědí, můžete tuto metodu Byte použít k odeslání jako pole namísto zápisu dat těla do OutputStream vlastnosti a volání Close metody.

Tato metoda zavře stream odpovědi a HttpListenerRequest přidružený k odpovědi.

Pokud false je zadán jako willBlock, vrátí metoda okamžitě a připojení je ukončeno asynchronně po odeslání dat.

Poznámka

Pokud se zavírá asynchronně, není možné, aby volající určil, kdy byla data odeslána. Kromě toho můžete před odesláním všech dat ukončit připojení tak, HttpListenerResponseže odstraníte , HttpListenerContext nebo HttpListener .

Viz také

Platí pro