As a PHP programmer I’m used to using $_GET to retrieve the HTTP query string… and if I need the whole string, theres loads of ways to do it.
In ASP however, I can’t seem to get the query.
Here is the code for news.aspx (embedded in some 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);
%>
I am fetching a PHP script’s output from a remote server, and this works perfectly without the Request.Querystring.
The issue is that I’m trying to get the full query string on the first line: Request.Querystring. I am getting an error “Object reference not set to an instance of an object” which basically means that Request.Querystring doesn’t exist.
Any idea what the problem is here? How can I get that query string so when index.aspx is called like http://test.com/news.aspx?id=2 my script fetches http://www.example.com/rendernews.php?id=2
Answers:
Thank you for visiting the Q&A section on Magenaut. Please note that all the answers may not help you solve the issue immediately. So please treat them as advisements. If you found the post helpful (or not), leave a comment & I’ll get back to you as soon as possible.
Method 1
Try Request.Url.Query if you want the raw querystring as a string.
Method 2
This should work fine for you.
Write this code in the Page_Load event of the page.
string ID = Request.QueryString["id"].ToString();
Response.Redirect("http://www.example.com/rendernews.php?id=" + ID);
Method 3
Request.QueryString returns you a collection of Key/Value pairs representing the Query String. Not a String. Don’t think that would cause a Object Reference error though. The reason your getting that is because as Mauro pointed out in the comments. It’s QueryString and not Querystring.
Try:
Request.QueryString.ToString();
or
<%
string URL = Request.Url.AbsoluteUri
System.Net.WebClient wc = new System.Net.WebClient();
string data = wc.DownloadString(URL);
Response.Output.Write(data);
%>
Same as your code but Request.Url.AbsoluteUri will return the full path, including the query string.
Method 4
Just use Request.QueryString.ToString() to get full query string, like this:
string URL = "http://www.example.com/rendernews.php?"+Request.Querystring.ToString();
Method 5
I have tested your example, and while Request.QueryString is not convertible to a string neither implicit nor explicit still the .ToString() method returns the correct result.
Further more when concatenating with a string using the “+” operator as in your example it will also return the correct result (because this behaves as if .ToString() was called).
As such there is nothing wrong with your code, and I would suggest that your issue was because of a typo in your code writing “Querystring” instead of “QueryString”.
And this makes more sense with your error message since if the problem is that QueryString is a collection and not a string it would have to give another error message.
Method 6
just a moment ago, i came across with the same issue. and i resolve it in the following manner.
Response.Redirect("../index.aspx?Name="+this.textName.Text+"&LastName="+this.textlName.Text);
with reference to the this
All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0