Llegar a la cadena de consulta (matriz de solicitud GET) dentro de un servicio web en .NET
-
08-07-2019 - |
Pregunta
Estoy buscando encontrar una manera de acceder a la cadena de consulta .net contenida en el objeto de solicitud ASP.NET estándar dentro de un servicio web. En otras palabras, si configuro un servicio web SOAP para esta url:
http: //localhost/service.asmx? id = 2
¿Puedo acceder a la variable Get ID?
Solución
Acabo de buscar " Solicitud " del contexto en el archivo asmx y lo vi. Pero no estoy seguro si es correcto.
this.Context.Request.QueryString["id"];
Otros consejos
HttpContext.Current.Request.QueryString [" id "]
Como preguntas, supongo que no hay HttpContext.Current.Request?
Mientras buscaba la solución del mismo problema, decidí adoptar un enfoque diferente. Mi cadena de consulta estaba llena de muchas variables y como no pude acceder a los datos de la cadena de consulta desde el servicio web, y tampoco quería enviar cada variable de cadena de consulta como un parámetro separado, preparé mi método web para esperar uno parámetro de cadena adicional.
Ese parámetro era window.location (URL completa de la página) en mi función de JavaScript en la página .aspx
Una vez que tenía la URL en mi servicio web, el resto era bastante sencillo
Uri myRef = new Uri(stringMyWindowLocationParameter);
System.Collections.Specialized.NameValueCollection mojQuery = HttpUtility.ParseQueryString(myRef.Query);
Ahora mi cadena de consulta está contenida dentro del objeto myRef y así es como lo llamo
// Instead trying to request query string like this
string myId = HttpContext.Current.Request.QueryString["id"];
// ... I called it like this
string myId = myRef["id"];
Quizás no sea la forma más elegante, pero resolvió mi problema.