Получить полную строку запроса в 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 67

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);

со ссылкой на этой