NotSupportedException, выброшенное в EndGetResponse(request.BeginGetResponse(null, null)))

У меня есть следующий код, чтобы сделать синхронный вызов асинхронным.

Пожалуйста, не думайте, что это плохо, я знаю, и это нужно сделать только для одного конкретного запроса.

Код вызывает исключение в Windows Phone 8, когда выполняется использование (var response = request.EndGetResponse(request.BeginGetResponse(null, null)))).

Запрос фактически вызывается в обработчике события UnhandledException.

Исключение: NotSupportedException

Сообщение: Method is not supported

Трассировки стека:

в System.Net.Browser.ClientHttpWebRequest.BeginGetResponse(обратный вызов AsyncCallback, состояние объекта) в Gtas.Core.ServiceRepository.ExecuteGtasRequest(строковый url, String requestData, логический isError, String filePathoreException.Hext.Exception.Exception исключение, AppEnvironment appEnvironment, GtasPerformance GtasPerformance, LimitedCrashExtraDataList extraData, String filePath) в Gtas_WP8.GtasHandler.UnhandledExceptionsHandler(отправитель объекта, ApplicationUnhandledExceptionEvent., UInt32& xresultValue)

public void ExecuteRequest(string url, string requestData)
{
    try
    {
        WebRequest request = WebRequest.Create(new Uri(url));
        request.Method = "POST";
        request.ContentType = "application/x-www-form-urlencoded";
        request.Headers["Header-Key"] = "AKey";

        // Convert the string into a byte array.
        byte[] postBytes = Encoding.UTF8.GetBytes(requestData);

        using (var requestStream = request.EndGetRequestStream(request.BeginGetRequestStream(null, null)))
        {
            // Write to the request stream.
            endGetRequestStream.Write(postBytes, 0, postBytes.Length);
        }

        using (var response = request.EndGetResponse(request.BeginGetResponse(null, null))) // NotSupportedException
        {
            using (var streamRead = new StreamReader(response.GetResponseStream()))
            {
                // The Response
                string responseString = streamRead.ReadToEnd();

                if (!string.IsNullOrWhiteSpace(requestDataObjResult.FileName))
                {
                    var fileRepo = new FileRepository();
                    fileRepo.Delete(request.FileName);
                }

                Debug.WriteLine("Response : {0}", responseString);
            }
        }
    }
    catch (WebException webEx)
    {
        WebExceptionStatus status = webEx.Status;
        WebResponse responseEx = webEx.Response;
        Debug.WriteLine(webEx.ToString());
    }    
}

Возможно ли, чтобы фреймворк не допустил этого?

Заранее спасибо.

1 ответ

Вам не нужно ждать, пока BeginGetResponse закончится, прежде чем вызывать EndGetResponse? Это может вызвать исключение NotSupportedException.

Дальше у меня возникла похожая проблема. При попытке вызвать BeginGetResponse с обратным вызовом null возникла исключительная ситуация NotSupportedException. Я обхожу эту проблему, просто определяя это

   (a)=>{}

в качестве обратного вызова. (Это был серебряный свет)

С уважением

Christoph

Другие вопросы по тегам