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スクリプトの出力を取得していますが、これはRequest.Querystringがなくても完全に機能します。
問題は、最初の行で完全なクエリ文字列を取得しようとしていることです:Request.Querystring。 「オブジェクト参照がオブジェクトのインスタンスに設定されていません」というエラーが表示されます。これは、基本的にRequest.Querystringが存在しないことを意味します。
ここに問題が何であるか考えていますか? index.aspxが http://test.com/news.aspx?id=2 スクリプトフェッチ 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が文字列ではなくコレクションである場合、別のエラーメッセージを表示する必要があるためです。