Поделиться через


HttpListener.EndGetContext(IAsyncResult) Метод

Определение

Завершает асинхронную операцию для получения входящего запроса клиента.

public:
 System::Net::HttpListenerContext ^ EndGetContext(IAsyncResult ^ asyncResult);
public System.Net.HttpListenerContext EndGetContext(IAsyncResult asyncResult);
member this.EndGetContext : IAsyncResult -> System.Net.HttpListenerContext
Public Function EndGetContext (asyncResult As IAsyncResult) As HttpListenerContext

Параметры

asyncResult
IAsyncResult

IAsyncResult Объект, полученный при запуске асинхронной операции.

Возвращаемое значение

Объект HttpListenerContext , представляющий запрос клиента.

Исключения

asyncResult не был получен путем BeginGetContext(AsyncCallback, Object) вызова метода.

asyncResult равно null.

Сбой вызова функции Win32. Проверьте свойство исключения ErrorCode , чтобы определить причину исключения.

Метод EndGetContext(IAsyncResult) уже был вызван для указанного asyncResult объекта.

Этот объект закрыт.

Примеры

В следующем примере кода показана реализация метода обратного вызова, вызывающего EndGetContext метод.

public static void ListenerCallback(IAsyncResult result)
{
    HttpListener listener = (HttpListener) result.AsyncState;
    // Call EndGetContext to complete the asynchronous operation.
    HttpListenerContext context = listener.EndGetContext(result);
    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;
    System.IO.Stream output = response.OutputStream;
    output.Write(buffer,0,buffer.Length);
    // You must close the output stream.
    output.Close();
}
Public Shared Sub ListenerCallback(ByVal result As IAsyncResult)
    Dim listener As HttpListener = CType(result.AsyncState, HttpListener)
    ' Call EndGetContext to complete the asynchronous operation.
    Dim context As HttpListenerContext = listener.EndGetContext(result)
    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
    Dim output As System.IO.Stream = response.OutputStream
    output.Write(buffer, 0, buffer.Length)
    ' You must close the output stream.
    output.Close()
End Sub

Комментарии

Метод EndGetContext вызывается, как правило, в методе обратного вызова, определяемом приложением делегатом, для получения HttpListenerContext объекта, содержащего входящий запрос клиента и связанный с ним ответ. Этот метод завершает операцию, запущенную ранее путем вызова BeginGetContext метода. Если операция не завершена, этот метод блокируется до тех пор, пока он не будет выполнен.

Так как для вызова EndGetContext метода требуется HttpListener объект, этот объект обычно передается в метод обратного вызова с помощью объекта состояния, переданного в BeginGetContext метод. Этот объект состояния можно получить с помощью AsyncState свойства asyncResult объекта.

Подробные сведения об использовании асинхронной модели программирования см. в статье "Вызов синхронных методов асинхронно".

Примечания для тех, кто вызывает этот метод

Этот элемент выводит сведения о трассировке при включении трассировки сети в приложении. Дополнительные сведения см. в разделе "Трассировка сети" в .NET Framework.

Применяется к