Obtenir toute la chaîne de requête en C# ASP.NET
Comme un 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.
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 une erreur "Objet de référence non 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
- Est-il toujours échouer, ou il y a des cas limites comme personne d'obtenir des variables définies?
- Il échoue toujours...
Vous devez vous connecter pour publier un commentaire.
Essayer
Demande.Url.Requête
si vous voulez que le raw querystring comme une chaîne de caractères.Cela devrait fonctionner pour vous.
Écrire ce code dans les
Page_Load
cas de la page.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.Essayer:
ou
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.Suffit d'utiliser
Request.QueryString.ToString()
d'obtenir toute la chaîne de requête, comme ceci: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.
seulement il y a un moment, je suis tombé sur le même problème. et je le résoudre de la manière suivante.
avec référence à la cette