在C#ASP.NET中获取完整的查询string

作为一个PHP程序员,我习惯于使用$ _GET来检索HTTP查询string…如果我需要整个string,那么加载的方式来做到这一点。

但在ASP中,我似乎无法得到查询。

这里是news.aspx的代码(embedded在一些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。

问题是,我试图在第一行得到完整的查询string:Request.Querystring。 我得到一个错误“ 对象引用未设置为对象的实例 ”,这基本上意味着Request.Querystring不存在。

任何想法是什么问题在这里? 我怎样才能得到该查询string,所以当index.aspx被调用像http://test.com/news.aspx?id=2我的脚本提取http://www.example.com/rendernews.php?id=2

尝试Request.Url.Query如果你想原始查询string作为一个string。

这应该适合你。

将此代码写入页面的Page_Load事件中。

 string ID = Request.QueryString["id"].ToString(); Response.Redirect("http://www.example.com/rendernews.php?id=" + ID); 

Request.QueryString返回表示查询string的键/值对的集合。 不是一个string。 不要以为这会导致对象引用错误。 你得到的原因是因为毛罗在评论中指出的。 它的查询string,而不是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将返回完整path,包括查询string。

只需使用Request.QueryString.ToString()来获取完整的查询string,如下所示:

 string URL = "http://www.example.com/rendernews.php?"+Request.Querystring.ToString(); 

我已经testing了你的例子,虽然Request.QueryString不能转换为一个string既不隐式也不显式仍然.ToString()方法返回正确的结果。

更进一步,当与你的例子中使用“+”运算符连接string时,它也将返回正确的结果(因为它的行为就好像.ToString()被调用)。

因此,您的代码没有任何问题,并且我build议您的问题是由于您的代码中写入“Querystring”而不是“QueryString”的拼写错误。

这对你的错误信息更有意义,因为如果问题是QueryString是一个集合,而不是一个string,它将不得不提供另一个错误信息。

就在刚才,我遇到了同样的问题。 我以下面的方式解决它。

 Response.Redirect("../index.aspx?Name="+this.textName.Text+"&LastName="+this.textlName.Text); 

参照这个