Проверьте, существует ли HttpWebRequest в C # .NET - PullRequest
0 голосов
/ 14 октября 2011

В моем коде указано следующее:

  private HttpWebRequest req = null;
  private IAsyncResult result = null;

В моем коде есть событие нажатия кнопки, которое называется btnUpload:

 req = (HttpWebRequest)WebRequest.Create(string.Format("{0}{1}", pageUrl.ToString(), arguments));
 req.Method = "GET";

 // Start the asynchronous request.
 result = (IAsyncResult)req.BeginGetResponse(new AsyncCallback(RespCallback), null);

Затем у меня есть еще одно событие нажатия кнопки на той же странице и в коде, называемом btnSubmit, которое имеет:

 if (req == null)

Требование всегда нулевое. Как получить доступ к переменным req и result?

Ответы [ 3 ]

2 голосов
/ 14 октября 2011

Это потому, что ваш Page экземпляр объекта не живет в нескольких HTTP-запросах.Такое поведение разработано в ASP.NET.

Вы должны взглянуть на класс PageAsyncTask.Это сообщение в блоге может быть полезно, чтобы узнать, как его использовать.

1 голос
/ 14 октября 2011

Если вы выполняете асинхронный запрос, у вас будет доступ только к результату в методе обратного вызова RespCallback. Вам также нужно будет передать исходный запрос в асинхронный вызов, чтобы получить ответ. Возьмите следующий пример:

protected void Page_Load(object sender, EventArgs e)
        {
            HttpWebRequest req;

            req = (HttpWebRequest)WebRequest.Create(string.Format("{0}{1}", pageUrl.ToString(), arguments));
            req.Method = "GET";

            // pass in request so we can retrieve it later
            req.BeginGetResponse(new AsyncCallback(RespCallback), req); 

        }

        void RespCallback(IAsyncResult result)
        {
            HttpWebRequest originalRequest = (HttpWebRequest)result.AsyncState;
            HttpWebResponse response = (HttpWebResponse)originalRequest.EndGetResponse(result);

            // response.GetResponseStream()
        }
0 голосов
/ 14 октября 2011

веб (программирование) не имеет состояния (кроме состояния искусственного пользовательского интерфейса веб-форм, поддерживаемого viewstate), что означает, что если вы создадите экземпляр объекта в btnUpload_Click, его не будет в другом событии кнопки. Так что вам нужно либо воссоздать объект и т. Д., Например HttpWebRequest в событиях обеих кнопок или где-нибудь сохраните результаты btnUpload_Click (например, в Session) и получите доступ к нему из btnSubmit_click. Также Google для ASP.net страницы жизненного цикла.
Надеюсь, это поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...