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