HttpListenerResponse.Close Metode
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Mengirim respons ke klien dan merilis sumber daya yang dipegang oleh instans ini HttpListenerResponse .
Overload
Close() |
Mengirim respons ke klien dan merilis sumber daya yang dipegang oleh instans ini HttpListenerResponse . |
Close(Byte[], Boolean) |
Mengembalikan array byte yang ditentukan ke klien dan merilis sumber daya yang dipegang oleh instans ini HttpListenerResponse . |
Close()
Mengirim respons ke klien dan merilis sumber daya yang dipegang oleh instans ini HttpListenerResponse .
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 ()
- Atribut
Contoh
Contoh kode berikut menunjukkan pemanggilan metode ini untuk mengirim Forbidden respons (403) ke klien.
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
Keterangan
Metode ini menutup aliran respons dan yang HttpListenerRequest terkait dengan respons.
Lihat juga
Berlaku untuk
Close(Byte[], Boolean)
Mengembalikan array byte yang ditentukan ke klien dan merilis sumber daya yang dipegang oleh instans ini HttpListenerResponse .
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)
Parameter
- willBlock
- Boolean
true
untuk memblokir eksekusi saat membersihkan aliran ke klien; jika tidak, false
.
- Atribut
Pengecualian
responseEntity
adalah null
.
Objek ini ditutup.
Contoh
Contoh kode berikut menunjukkan panggilan metode ini.
// 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
Keterangan
Jika Anda mengirim data isi dengan respons, Anda dapat menggunakan metode ini untuk mengirimnya sebagai Byte array alih-alih menulis data isi ke OutputStream properti dan memanggil Close metode .
Metode ini menutup aliran respons dan yang HttpListenerRequest terkait dengan respons.
Jika false
ditentukan sebagai willBlock
, metode segera kembali dan koneksi ditutup secara asinkron setelah data dikirim.
Catatan
Jika menutup secara asinkron, pemanggil tidak dapat menentukan kapan data telah dikirim. Selain itu, membuang HttpListenerResponse, HttpListenerContext atau HttpListener dapat menutup koneksi sebelum semua data dikirim.