Se usi ASP.NET Core 1 o 2, puoi farlo con Microsoft.AspNetCore.WebUtilities.QueryHelpersil pacchetto Microsoft.AspNetCore.WebUtilities .
Se si usa ASP.NET Core 3.0 o versione successiva, WebUtilitiesora fa parte di ASP.NET SDK e non richiede un riferimento al pacchetto nuget separato.
Per analizzarlo in un dizionario:
var uri = new Uri(context.RedirectUri);
var queryDictionary = Microsoft.AspNetCore.WebUtilities.QueryHelpers.ParseQuery(uri.Query);
Si noti che a differenza ParseQueryStringdi System.Web, restituisce un dizionario di tipo IDictionary<string, string[]>in ASP.NET Core 1.x o IDictionary<string, StringValues>ASP.NET Core 2.x o versione successiva, quindi il valore è una raccolta di stringhe. Questo è il modo in cui il dizionario gestisce più parametri della stringa di query con lo stesso nome.
Se desideri aggiungere un parametro alla stringa di query, puoi utilizzare un altro metodo su 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);
Utilizzando .net core 2.2 è possibile ottenere la stringa di query utilizzando
var request = HttpContext.Request;
var query = request.query;
foreach (var item in query){
Debug.WriteLine(item)
}
Otterrai una raccolta di coppie chiave: valore, come questa
[0] {[companyName, ]}
[1] {[shop, ]}
[2] {[breath, ]}
[3] {[hand, ]}
[4] {[eye, ]}
[5] {[firstAid, ]}
[6] {[eyeCleaner, ]}
Microsoft.AspNet.WebUtiltiespotrebbe essere laMono.HttpUtilitylibreria .