如果您使用的是 ASP.NET Core 1 或 2,则可以使用 Microsoft.AspNetCore.WebUtilities 包中的 Microsoft.AspNetCore.WebUtilities.QueryHelpers 执行此操作。
如果您使用的是 ASP.NET Core 3.0 或更高版本,WebUtilities 现在是 ASP.NET SDK 的一部分,不需要单独的 nuget 包引用。
将其解析为字典:
var uri = new Uri(context.RedirectUri);
var queryDictionary = Microsoft.AspNetCore.WebUtilities.QueryHelpers.ParseQuery(uri.Query);
请注意,与 System.Web 中的 ParseQueryString 不同,它在 ASP.NET Core 1.x 中返回 IDictionary<string, string[]> 类型的字典,在 ASP.NET Core 2.x 或更高版本中返回 IDictionary<string, StringValues> 类型的字典,因此值是字符串的集合。这就是字典处理多个同名查询字符串参数的方式。
如果要在查询字符串上添加参数,可以在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);
使用 .net core 2.2 可以获取查询字符串
var request = HttpContext.Request;
var query = request.Query;
foreach (var item in query){
Debug.WriteLine(item)
}
你会得到一个键值对的集合——像这样
[0] {[companyName, ]}
[1] {[shop, ]}
[2] {[breath, ]}
[3] {[hand, ]}
[4] {[eye, ]}
[5] {[firstAid, ]}
[6] {[eyeCleaner, ]}