[c#] C # ASP.NET에서 전체 쿼리 문자열 가져 오기

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쿼리 문자열을 나타내는 키 / 값 쌍 모음을 반환합니다. 문자열이 아닙니다. 그래도 객체 참조 오류가 발생할 것이라고 생각하지 마십시오. 당신이 그것을 얻는 이유는 Mauro가 코멘트에서 지적했듯이 때문입니다. 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);

받는 참조하여


답변