Si está utilizando ASP.NET Core 1 o 2, puede hacerlo con Microsoft.AspNetCore.WebUtilities.QueryHelpersel paquete Microsoft.AspNetCore.WebUtilities .
Si usa ASP.NET Core 3.0 o superior, WebUtilitiesahora forma parte del SDK de ASP.NET y no requiere una referencia de paquete nuget separada.
Para analizarlo en un diccionario:
var uri = new Uri(context.RedirectUri);
var queryDictionary = Microsoft.AspNetCore.WebUtilities.QueryHelpers.ParseQuery(uri.Query);
Tenga ParseQueryStringen cuenta que, a diferencia de System.Web, devuelve un diccionario de tipo IDictionary<string, string[]>en ASP.NET Core 1.x, o IDictionary<string, StringValues>en ASP.NET Core 2.xo posterior, por lo que el valor es una colección de cadenas. Así es como el diccionario maneja múltiples parámetros de cadena de consulta con el mismo nombre.
Si desea agregar un parámetro a la cadena de consulta, puede usar otro método en QueryHelpers:
var parametersToAdd = new System.Collections.Generic.Dictionary<string, string> { { "resource", "foo" } };
var someUrl = "http://www.google.com";
var newUri = Microsoft.AspNetCore.WebUtilities.QueryHelpers.AddQueryString(someUrl, parametersToAdd);
Usando .net core 2.2 puede obtener la cadena de consulta usando
var request = HttpContext.Request;
var query = request.query;
foreach (var item in query){
Debug.WriteLine(item)
}
Obtendrá una colección de pares clave: valor, como este
[0] {[companyName, ]}
[1] {[shop, ]}
[2] {[breath, ]}
[3] {[hand, ]}
[4] {[eye, ]}
[5] {[firstAid, ]}
[6] {[eyeCleaner, ]}
Microsoft.AspNet.WebUtiltiespuede ser laMono.HttpUtilitybiblioteca .