Получить полную строку запроса в С# ASP.NET

Как программист PHP, я привык использовать $_GET для извлечения строки запроса HTTP... и если мне нужна целая строка, у вас есть множество способов сделать это.

В ASP, однако, я не могу получить запрос.

Вот код для news.aspx(встроенный в некоторый HTML):

<%                             
    string URL = "http://www.example.com/rendernews.php?"+Request.Querystring;
    System.Net.WebClient wc = new System.Net.WebClient();
    string data = wc.DownloadString(URL);
    Response.Output.Write(data);
%>

Я извлекаю вывод PHP script с удаленного сервера, и это отлично работает без Request.Querystring.

Проблема в том, что я пытаюсь получить полную строку запроса в первой строке: Request.Querystring. Я получаю сообщение об ошибке "Ссылка на объект не установлена ​​в экземпляр объекта", что в основном означает, что Request.Querystring не существует.

Любая идея, в чем проблема? Как я могу получить эту строку запроса, поэтому, когда index.aspx вызывается как http://test.com/news.aspx?id=2 my script fetches http://www.example.com/rendernews.php?id=2

Ответ 1

Попробуйте Request.Url.Query, если вы хотите, чтобы необработанные строки выполнялись как строка.

Ответ 2

Это должно сработать для вас.

Введите этот код в Page_Load на странице.

string ID = Request.QueryString["id"].ToString();
Response.Redirect("http://www.example.com/rendernews.php?id=" + ID);

Ответ 3

Request.QueryString возвращает вам набор пар ключ/значение, представляющих строку запроса. Не строка. Не думайте, что это приведет к ошибке ссылки на объект. Причина, по которой вы получаете это, потому что, как указал Мауро в комментариях. Это QueryString, а не Querystring.

Попробуйте:

Request.QueryString.ToString();

или

<%                                 
    string URL = Request.Url.AbsoluteUri 
    System.Net.WebClient wc = new System.Net.WebClient();
    string data = wc.DownloadString(URL);
    Response.Output.Write(data);
%>

То же, что и ваш код, но Request.Url.AbsoluteUri вернет полный путь, включая строку запроса.

Ответ 4

Просто используйте Request.QueryString.ToString(), чтобы получить полную строку запроса, например:

string URL = "http://www.example.com/rendernews.php?"+Request.Querystring.ToString();

Ответ 5

Я проверил ваш пример, и хотя Request.QueryString не конвертируется в строку, не содержащую явных или явных, метод .ToString() возвращает правильный результат.

Далее, при конкатенации строкой с использованием оператора "+", как в вашем примере, он также вернет правильный результат (потому что это ведет себя так, как если бы был вызван .ToString()).

Как таковой нет ничего плохого в вашем коде, и я бы предположил, что ваша проблема возникла из-за опечатки в вашем коде, написавшего "Querystring" вместо "QueryString".

И это имеет смысл с вашим сообщением об ошибке, так как проблема заключается в том, что QueryString - это коллекция, а не строка, она должна будет дать другое сообщение об ошибке.

Ответ 6

всего лишь минуту назад я столкнулся с той же проблемой. и я разрешаю его следующим образом.

Response.Redirect("../index.aspx?Name="+this.textName.Text+"&LastName="+this.textlName.Text);

со ссылкой на this