WebRequest BeginGetResponse / EndGetResponse lanza una excepción cuando usa Task.FromAsync

Intento asinificar la operación POST a un servicio web REST mediante la solicitud web.

Entonces, por lo que sé, necesito usar elTask.Factory.FromAsync<T>(BeginXyz, EndXyz, null), parece que esta funcionando para elGetRequestStream métodos de par, ya que no obtengo ninguna excepción y el byte [] está lleno de valores.

Stream requestStream = await Task.Factory.FromAsync<Stream>(
                        request.BeginGetRequestStream, request.EndGetRequestStream, null);
byte[] postBytes = Encoding.UTF8.GetBytes(requestData);
await requestStream.WriteAsync(postBytes, 0, postBytes.Length);

Bien, el código anterior funciona y la siguiente parte es la excepción.

WebResponse webResponse = await Task.Factory.FromAsync<WebResponse>(
                        request.BeginGetResponse, request.EndGetResponse, null);

La excepción que recibo a cada solicitud.

System.NotSupportedException: el método especificado no es compatible.

StackTrace:

at System.Net.Browser.AsyncHelper.BeginOnUI (SendOrPostCallback beginMethod, estado del objeto) en System.Net.Browser.ClientHttpWebRequest.EndGetResponse (IAsyncResult asyncResult) en el sistema. TaskFactory`1.FromAsyncCoreLogic (IAsyncResult iar, Func`2 endFunction, Action`1 endAction, Task`1 promise, Boolean requireSynchronization) --- Fin de la pila de la ubicación anterior donde se produjo la excepción --- en System.Runtime.CompilerServices .TaskAwaiter.ThrowForNonSuccess (Tarea) en System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (Tarea de tarea) en los casos de las partes.

InnerException StackTrace: en System.Net.Browser.ClientHttpWebRequest.InternalEndGetResponse (IAsyncResult asyncResult) en System.Net.Braceas.Payas en el campo de la prenda. Objeto sendState)

Un código completo para ejecutar la solicitud debería ser así:

Stream requestStream = await Task.Factory.FromAsync<Stream>(
                        request.BeginGetRequestStream, request.EndGetRequestStream, null);
byte[] postBytes = Encoding.UTF8.GetBytes(requestData);
await requestStream.WriteAsync(postBytes, 0, postBytes.Length);


WebResponse webResponse = await Task.Factory.FromAsync<WebResponse>(
                        request.BeginGetResponse, request.EndGetResponse, null);
Stream streamResponse = webResponse.GetResponseStream();
StreamReader streamRead = new StreamReader(streamResponse);
string responseString = await streamRead.ReadToEndAsync();
// ... Do something with the result data

No entiendo muy bien cuál es el error.

Probé varias implementaciones desde stackoverflow y algunas publicaciones de MSDN. Nada parece funcionar.

El uso de devoluciones de llamada funciona bien. Pero es bueno saber por qué no puedo hacer que funcione.

¿Alguna idea de cómo lograr esto?

Respuestas a la pregunta(2)

Su respuesta a la pregunta