Как программист 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-скрипта с удаленного сервера, и он отлично работает без Request.Querystring.
Проблема в том, что я пытаюсь получить полную строку запроса в первой строке: Request.Querystring. Я получаю сообщение об ошибке « Ссылка на объект не указана на экземпляр объекта », что в основном означает, что Request.Querystring не существует.
Есть идеи, в чем проблема? Как я могу получить эту строку запроса, чтобы при вызове index.aspx типа http://test.com/news.aspx?id=2 мой скрипт извлекал http://www.example.com/rendernews.php?id=2
Ответы:
Попробуйте,
Request.Url.Query
если вам нужна необработанная строка запроса в виде строки.источник
Это должно сработать для вас.
Напишите этот код в
Page_Load
случае страницы.string ID = Request.QueryString["id"].ToString(); Response.Redirect("http://www.example.com/rendernews.php?id=" + ID);
источник
Request.QueryString
возвращает вам коллекцию пар ключ / значение, представляющую строку запроса. Не строка. Однако не думайте, что это вызовет ошибку ссылки на объект. Причина, по которой вы это получаете, заключается в том, что, как указал Мауро в комментариях. Это QueryString, а не Querystring.Пытаться:
или же
<% 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
вернет полный путь, включая строку запроса.источник
Просто используйте,
Request.QueryString.ToString()
чтобы получить полную строку запроса, например:string URL = "http://www.example.com/rendernews.php?"+Request.Querystring.ToString();
источник
Я проверил ваш пример, и хотя Request.QueryString не может быть преобразован в строку, ни неявную, ни явную, метод .ToString () возвращает правильный результат.
Более того, при объединении со строкой с использованием оператора «+», как в вашем примере, он также вернет правильный результат (поскольку это ведет себя так, как если бы был вызван .ToString ()).
Таким образом, в вашем коде нет ничего плохого, и я бы предположил, что ваша проблема возникла из-за опечатки в вашем коде, написавшей «Querystring» вместо «QueryString».
И это имеет больше смысла с вашим сообщением об ошибке, поскольку, если проблема в том, что QueryString является коллекцией, а не строкой, ему придется выдать другое сообщение об ошибке.
источник
всего мгновение назад я столкнулся с той же проблемой. и я разрешаю это следующим образом.
Response.Redirect("../index.aspx?Name="+this.textName.Text+"&LastName="+this.textlName.Text);
со ссылкой на это
источник