/// <summary> /// This method makes a callback to an AsyncResponseParser and takes a service management request and certificate and sends a request to /// the management endpoint /// </summary> public static Task<WebResponse> MakeASyncRequest(ServiceManagementRequest serviceManagementRequest, ServiceManager.AsyncResponseParser parser, ServiceManager.AsyncResponseException error) { if (ServicePointManager.ServerCertificateValidationCallback == null) ServicePointManager.ServerCertificateValidationCallback += (sender, certificate, chain, errors) => true; ServicePointManager.DefaultConnectionLimit = 40; HttpWebRequest request = BuildAzureHttpRequest(serviceManagementRequest); return Task<WebResponse>.Factory .FromAsync(request.BeginGetResponse, request.EndGetResponse, null) .ContinueWith<WebResponse>(task => { if (task.Exception != null) { if(task.Exception.InnerException.GetType() == typeof(WebException)) error((WebException)task.Exception.InnerException); return null; } var response = (HttpWebResponse)task.Result; parser(response); return response; }); //IAsyncResult result = request.BeginGetResponse((asyncResult) => // { // try // { // var response = (HttpWebResponse)request.EndGetResponse(asyncResult); // parser(response); // } // catch (WebException ex) { error(ex);} // }, null); }
public void MakeASyncRequest(ServiceManagementRequest serviceManagementRequest, ServiceManager.AsyncResponseParser parser) { MakeASyncRequest(serviceManagementRequest, parser, null); }