Веб-клиент — асинхронные операции в этом контексте запрещены.

Это библиотека классов, и она вызывается с веб-страницы.

try
  {
    System.Net.WebClient wc = WebAccess.GetWebClient();
    wc.UploadStringCompleted += new System.Net.UploadStringCompletedEventHandler(wc_UploadStringCompleted);
    wc.UploadStringAsync(new Uri("http://" + MobileWLCUrl + urlCreateCacheAPI), GetJSONforGetMenuDetails(Id, MenuIds));                    
  }
catch (Exception ex) { EngineException.HandleException(ex); }

void wc_UploadStringCompleted(object sender, System.Net.UploadStringCompletedEventArgs e)
    {
        string result = e.Result;
        EngineException.CreateLog("Cache Created (for Menus: " + MenuIds + ") in API for LocationId: " + LocId);
    }

Привет, ребята, я пытаюсь асинхронно попасть по этому URL-адресу, и это дает мне эту ошибку, любая помощь будет оценена.

Asynchronous operations are not allowed in this context. 
Page starting an asynchronous operation has to have the Async attribute set to true 
and an asynchronous operation can only be started on a page prior to PreRenderComplete event. 

at System.Web.AspNetSynchronizationContext.OperationStarted()
at System.Net.WebClient.UploadStringAsync(Uri address, String method, String data, Object userToken)
at System.Net.WebClient.UploadStringAsync(Uri address, String data)

Спасибо...


person 1Mayur    schedule 18.05.2012    source источник
comment
На это нет ответа?? Я думал, что это обычная ошибка, с которой я сталкиваюсь, очень разочарован   -  person 1Mayur    schedule 05.06.2012


Ответы (1)


Добавьте параметр Async="true" в директиву @Page.

<%@ Page Async="true" ... %>

Шивани,

Вам нужно применить это изменение на странице (хранящейся в "http://" + MobileWLCUrl + urlCreateCacheAPI), вызываемой в следующем коде:

wc.UploadStringAsync(new Uri("http://" + MobileWLCUrl + urlCreateCacheAPI), GetJSONforGetMenuDetails(Id, MenuIds)); 
person Romil Kumar Jain    schedule 18.05.2012
comment
Вы имеете в виду страницу, на которую я это вызываю? это файл .cs, я вызываю этот класс со своей страницы за кодом, я добавил это, но все равно результат, он продолжает выдавать мне это исключение - person 1Mayur; 18.05.2012
comment
Директивы страницы находятся на странице aspx. - person Romil Kumar Jain; 18.05.2012
comment
Я добавил это на страницу, но все равно не повезло - person 1Mayur; 18.05.2012
comment
Сирвани, я думаю, вы изменили директиву страницы на вызывающей странице. Обновите директиву на вызываемой странице в функции UploadStringAsync. - person Romil Kumar Jain; 18.05.2012
comment
Это библиотека классов, а не страница aspx - person 1Mayur; 18.05.2012
comment
реф немного не помог. Наконец, не было никакого результата для того, что я думал, было простой ошибкой. Изменение кода и переход на синхронный вариант. - person 1Mayur; 05.06.2012