答案:在.net中获取URL查询参数有多种方式,ASP.NET使用Request.QueryString,ASP.NET Core通过httpContext.Request.Query,非Web环境可用Uri结合HttpUtility.ParseQueryString或推荐的QueryHelpers.ParseQuery解析。

在 .NET 中获取 URL 的查询字符串参数非常简单,主要依赖于 Uri 和 NameValueCollection 类型,尤其是在 ASP.NET 或 ASP.NET Core 环境中。以下是几种常见方式:
1. 在 ASP.NET Web Forms 或 mvc 中(使用 HttpRequest)
如果你在传统的 ASP.NET 应用中,可以直接通过 Request.QueryString 获取参数:
- string value = Request.QueryString[“paramName”]; // 获取 paramName 的值
- // 示例:URL 是 http://example.com/page?name=john&age=25
- string name = Request.QueryString[“name”]; // 结果是 “john”
- string age = Request.QueryString[“age”]; // 结果是 “25”
2. 在 ASP.NET Core 中(使用 HttpContext.Request.Query)
ASP.NET Core 使用 IQueryCollection 来表示查询参数,可通过 HttpContext 获取:
- string value = HttpContext.Request.Query[“paramName”];
- // Query 返回的是 StringValues,可直接当作 string 使用
- if (HttpContext.Request.Query.ContainsKey(“name”))
- {
- var name = HttpContext.Request.Query[“name”];
- }
3. 纯 .NET(控制台或非 Web 环境)解析任意 URL
如果不在 Web 上下文中(比如控制台程序),可以手动解析 URL 的查询字符串:
- var uri = new Uri(“http://example.com/page?name=john&age=25”);
- var query = System.Web.HttpUtility.ParseQueryString(uri.Query);
- string name = query[“name”]; // “john”
- string age = query[“age”]; // “25”
注意:需要引用 System.Web 命名空间,在某些项目类型(如 .NET Core 控制台)中可能需要安装 microsoft.AspNetCore.WebUtilities 或使用替代方法。
4. 使用 Microsoft.AspNetCore.WebUtilities(推荐用于非 Web 项目)
在 .NET Core / .NET 5+ 的非 ASP.NET 项目中,推荐使用 QueryHelpers 或手动解析:
- using Microsoft.AspNetCore.WebUtilities;
- var uri = new Uri(“http://example.com/page?name=john&age=25”);
- var queryParameters = QueryHelpers.ParseQuery(uri.Query);
- string name = queryParameters[“name”]; // 注意返回的是 StringValues
- string age = queryParameters[“age”];
这个方法不需要引用 System.Web,更适合跨平台应用。
基本上就这些。根据你的项目类型选择合适的方法即可。Web 项目用 Request.QueryString 或 HttpContext.Request.Query,非 Web 项目建议用 QueryHelpers。