84 votes

Obtenir la chaîne de requête complète en C # ASP.NET

En tant que programmeur PHP, j'ai l'habitude d'utiliser $_GET pour récupérer la chaîne de requête HTTP... et si j'ai besoin de l'ensemble de la chaîne, il ya des charges de façons de le faire.

En ASP cependant, je n'arrive pas à obtenir la requête.

Voici le code pour les nouvelles.aspx (intégrée dans le code 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);
%>

Je suis aller chercher un script PHP de sortie à partir d'un serveur distant, et cela fonctionne parfaitement sans le Demander.Querystring.

Le problème est que je suis en train d'essayer d'obtenir la totalité de la chaîne de requête sur la première ligne: Demande.Querystring. J'obtiens un message d'erreur "la référence d'Objet n'est pas définie à une instance d'un objet", ce qui signifie que la Demande.Querystring n'existe pas.

Aucune idée de ce qu'est le problème ici? Comment puis-je obtenir de la chaîne de requête ainsi, lorsque l'indice.aspx est appelé comme http://test.com/news.aspx?id=2 mon script récupère http://www.example.com/rendernews.php?id=2

Merci d'avance

208voto

Matt Davis Points 7798

Essayez Request.Url.Query si vous voulez que la chaîne de requête brute soit une chaîne.

19voto

Naveed Butt Points 1187

Cela devrait bien fonctionner pour vous.

Écrivez ce code dans l'événement Page_Load de la page.

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

11voto

Damien Points 3985

Request.QueryString vous renvoie une collection de paires Clé/Valeur qui représente la Chaîne de Requête. Pas une Chaîne de caractères. Ne pense pas que serait la cause d'une Référence d'Objet erreur, même si. La raison de votre arriver c'est parce que Mauro souligné dans les commentaires. C'est QueryString et pas Querystring.

Essayez: Demande.QueryString.ToString();

ou

<%                                 
    string URL = Request.Url.AbsoluteUri 
    System.Net.WebClient wc = new System.Net.WebClient();
    string data = wc.DownloadString(URL);
    Response.Output.Write(data);
%>

Même que votre code mais Demande.Url.AbsoluteUri sera de retour le chemin d'accès complet, y compris la chaîne de requête.

1voto

terR0Q Points 1004

Utilisez simplement Request.QueryString.ToString() pour obtenir la chaîne de requête complète, comme ceci:

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

0voto

yo hal Points 1949

J'ai testé votre exemple, et alors que la Demande.QueryString n'est pas convertible en une chaîne de caractères ni implicite, ni explicite encore la .Méthode ToString() renvoie le résultat correct.

De plus, lors de la concaténation d'une chaîne à l'aide de l'opérateur "+" comme dans votre exemple, il reviendra également le résultat correct (car elle se comporte comme si .ToString() a été appelé).

Comme il n'y a rien de mal avec votre code, et je dirais que votre question était à cause d'une faute de frappe dans votre code écrit "Querystring" au lieu de "QueryString".

Et cela fait plus de sens à votre message d'erreur, car si le problème est que la chaîne de Requête est un ensemble et non pas une chaîne, il serait de donner un autre message d'erreur.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X