ASP HttpWebRequest и Redirect - PullRequest
       19

ASP HttpWebRequest и Redirect

5 голосов
/ 08 февраля 2010

ОК, у меня есть клиент, выполняющий POST на сервере с некоторыми данными. Сервер получает сообщение и отвечает перенаправлением. Проблема в том, что клиент не перенаправляет. Кроме того, я попытался проверить StatusCode ответа, который получает клиент, и он всегда одинаковый «ОК». Вместо кода перенаправления. Чего мне не хватает?

На стороне клиента у меня есть что-то вроде этого:

  StringBuilder sb;
        try
        {
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://localhost/serv/Default.aspx");
            request.Method = "POST";                

        byte[] data = Encoding.ASCII.GetBytes(GetDATA());

        request.ContentType = "text/xml";
        request.ContentLength = data.Length;
        Stream stream = request.GetRequestStream();
        stream.Write(data, 0, data.Length);

        request.AllowAutoRedirect = true;
        request.MaximumAutomaticRedirections = 10;

        HttpWebResponse response = (HttpWebResponse) request.GetResponse();
            response.Close(); } catch(Exception ex) {}

На стороне сервера у меня есть только эта строка:

HttpContext.Current.Response.Redirect("http://www.google.com", true);

В этом случае клиент получает ответ и ничего не делает.

Спасибо.

1 Ответ

6 голосов
/ 08 февраля 2010

Если для параметра «AllowAutoRedirect» установлено значение true, это означает, что ваш объект HttpWebRequest выполнит 2-й веб-запрос, как только увидит перенаправление. Когда вы видите "200 OK" из объекта ответа, это происходит потому, что вы видите ответ для "www.google.com". Вы можете проверить Response.ResponseURI, чтобы проверить это.

Вам необходимо отключить «AllowAutoRedirect», а затем проверить код ответа, как сказал Одед.

...