Я создаю объект HttpWebRequest на другой странице aspx, чтобы сохранить поток ответов в моем хранилище данных. У URL, который я использую для создания объекта HttpWebRequest, есть строка запроса для отображения правильного вывода. Когда я захожу на страницу, используя любой старый браузер, он корректно отображает. Когда я пытаюсь получить выходной поток, используя HttpWebResponse.GetResponseStream (), он выполняет мою встроенную проверку ошибок.
Почему он правильно отображается в браузере, но не использует объекты HttpWebRequest и HttpWebResponse?
Вот исходный код:
Код позади целевой страницы:
protected void PageLoad(object sender, EventsArgs e)
{
string output = string.Empty;
if(Request.Querystring["a"] != null)
{
//generate output
output = "The query string value is " + Request.QueryString["a"].ToString();
}
else
{
//generate message indicating the query string variable is missing
output = "The query string value was not found";
}
Response.Write(output);
}
Код позади страницы, создающей объект HttpWebRequest
string url = "http://www.mysite.com/mypage.aspx?a=1";
HttpWebRequest request = (HttpWebRequest) WebRequest.Create(url)
//this if statement was missing from original example
if(User.Length > 0)
{
request.Credentials = new NetworkCredentials("myaccount", "mypassword", "mydomain");
request.PreAuthenticate = true;
}
request.UserAgent = Request.UserAgent;
HttpWebResponse response = (HttpWebResponse) request.GetResponse();
Stream resStream = response.GetResponseStream();
Encoding encode = System.Text.Encoding.GetEncoding("utf-8");
StreamReader readStream = new StreamReader(resStream, encode, true, 2000);
int count = readStream.Read(read, 0, read.Length);
string str = Server.HtmlEncode(" ");
while (count > 0)
{
// Dumps the 256 characters on a string and displays the string to the console.
string strRead = new string(read, 0, count);
str = str.Replace(str, str + Server.HtmlEncode(strRead.ToString()));
count = readStream.Read(read, 0, 256);
}
// return what was found
result = str.ToString();
resStream.Close();
readStream.Close();
Обновление
@ Дэвид Макьюинг - я создаю запрос HttpWebRequest с полным именем страницы. Страница все еще генерирует сообщение об ошибке. Я обновил пример кода целевой страницы, чтобы продемонстрировать, что именно я делаю.
@ Chris Lively - я не перенаправляю на страницу с ошибкой, я генерирую сообщение о том, что значение строки запроса не найдено. Я обновил пример исходного кода.
Обновление 1:
Я попытался с помощью Fiddler отследить запрос HttpWebRequest, и он не отображался в окне истории веб-сеансов. Я что-то упустил в исходном коде, чтобы получить полный веб-запрос и ответ.
Обновление 2:
Я не включил следующий раздел кода в мой пример, и он был виновником проблемы. Я устанавливал свойство Credentials
HttpWebRequest
с учетной записью службы вместо учетной записи AD, которая вызывала проблему.
Я обновил пример исходного кода