Хорошо, у меня есть клиент, делающий POST к серверу с некоторыми данными. Сервер получает сообщение и отвечает перенаправлением. Проблема состоит в том, что клиент не делает перенаправлений. Кроме того, я попытался проверить StatusCode ответа, который получает клиент, и это всегда - тот же "OK". Вместо кода перенаправления. Что я пропускаю?
В стороне клиента у меня есть что-то вроде этого:
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);
В этом случае клиент получает ответ и ничего не делает.
Спасибо.
Если для параметра AllowAutoRedirect установлено значение true, это означает, что ваш объект HttpWebRequest сделает второй веб-запрос, как только увидит перенаправление. Когда вы видите «200 OK» от объекта ответа, это потому, что вы видите ответ для «www.google.com». Вы можете проверить Response.ResponseURI, чтобы убедиться в этом.
Вам нужно отключить «AllowAutoRedirect», а затем проверить код ответа, как сказал Одед.