Condividi tramite


HttpListenerResponse.CopyFrom(HttpListenerResponse) Metodo

Definizione

Copia le proprietà dalla classe HttpListenerResponse specificata in questa risposta.

public:
 void CopyFrom(System::Net::HttpListenerResponse ^ templateResponse);
public void CopyFrom (System.Net.HttpListenerResponse templateResponse);
member this.CopyFrom : System.Net.HttpListenerResponse -> unit
Public Sub CopyFrom (templateResponse As HttpListenerResponse)

Parametri

templateResponse
HttpListenerResponse

Istanza di HttpListenerResponse da copiare.

Esempio

Nell'esempio di codice seguente viene illustrata la creazione di una risposta copiando una risposta modello.

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

Commenti

Se si modificano regolarmente molte proprietà dai valori predefiniti a un set fisso di nuovi valori, è consigliabile usare un'istanza HttpListenerResponse come modello. Personalizzare la risposta del modello una sola volta e, anziché configurare ogni risposta separatamente, chiamare il CopyFrom metodo per configurare una nuova risposta in base ai valori delle proprietà nella risposta del modello.

Le proprietà seguenti vengono copiate dall'istanza templateResponse corrente.

Si applica a

Vedi anche