2016-05-31 8 views
0

Im пытается перенаправить мою страницу ASP.NET на нее загрузить для перенаправления на другую страницу, URL-адрес которой я получил бы от ответа HTTP-сообщения.Перенаправление на URL-адрес из httpwebresponse Заголовок местоположения

HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create(url); 

StringBuilder postData = new StringBuilder(); 
postData.Append("xmldata=" + HttpUtility.UrlEncode(xdoc)); 
postData.Append("&signature=" +HttpUtility.UrlEncode(signature)); 
httpWebRequest.Method = "POST"; 
httpWebRequest.Accept = "*/*"; 
httpWebRequest.ContentType = "application/x-www-form-urlencoded"; 
using (Stream requestStream = httpWebRequest.GetRequestStream()) 
{ 
    using (MemoryStream ms = new MemoryStream()) 
    { 
     using (BinaryWriter bw = new BinaryWriter(ms)) 
     { 
      bw.Write(Encoding.UTF8.GetBytes(postData.ToString())); 
      ms.WriteTo(requestStream); 
     } 
    } 
} 
httpWebRequest.AllowAutoRedirect = false; 
var returnURL=""; 
using (HttpWebResponse httpWebResponse = (HttpWebResponse)httpWebRequest.GetResponse()) 
{ 
    httpStatusCode = httpWebResponse.StatusCode; 
    if (httpStatusCode == HttpStatusCode.Found) 
    { 
     returnURL= httpWebResponse.Headers["Location"].ToString(); 
    } 
} 

Response.Redirect(returnURL); 

Этот ответ перенаправляет завершение ошибки 404. Пожалуйста, помогите

+0

Какова ценность 'httpStatusCode', когда вы попадаете в свой оператор' if'? –

+0

Его Найдено и Описание говорит «Перемещено Временно» – Raju

ответ

0

Использование

System.Threading.Thread.Sleep(2000); 

перед тем

Response.Redirect(returnURL); 
+0

Пробовал, но все та же ошибка :( – Raju

1

В следующих строках кода:

var returnURL=""; 
using (HttpWebResponse httpWebResponse = (HttpWebResponse)httpWebRequest.GetResponse()) 
{ 
    httpStatusCode = httpWebResponse.StatusCode; 
    if (httpStatusCode == HttpStatusCode.Found) 
    { 
     returnURL= httpWebResponse.Headers["Location"].ToString(); 
    } 
} 

Response.Redirect(returnURL); 

Переменная returnURL может быть пустым, если httpStatusCode не равна HttpStatusCode.Found , Возможно, вы захотите передать другой действительный URL для других кодов состояния.