Ответ 1
Попробуйте Request.Url.Query
, если вы хотите, чтобы необработанные строки выполнялись как строка.
Как программист 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
Попробуйте 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.
Попробуйте:
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();
Я проверил ваш пример, и хотя Request.QueryString не конвертируется в строку, не содержащую явных или явных, метод .ToString() возвращает правильный результат.
Далее, при конкатенации строкой с использованием оператора "+", как в вашем примере, он также вернет правильный результат (потому что это ведет себя так, как если бы был вызван .ToString()).
Как таковой нет ничего плохого в вашем коде, и я бы предположил, что ваша проблема возникла из-за опечатки в вашем коде, написавшего "Querystring" вместо "QueryString".
И это имеет смысл с вашим сообщением об ошибке, так как проблема заключается в том, что QueryString - это коллекция, а не строка, она должна будет дать другое сообщение об ошибке.
всего лишь минуту назад я столкнулся с той же проблемой. и я разрешаю его следующим образом.
Response.Redirect("../index.aspx?Name="+this.textName.Text+"&LastName="+this.textlName.Text);
со ссылкой на this