You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

解析QueryString时如何保留参数的原始大小写?

问题:如何获取QueryString中与原始参数大小写完全一致的参数值?

问题场景

我执行了以下代码:

string checkUrl = HttpContext.Current.Request.Url.AbsoluteUri.ToLower();
Uri AbsoluteUri = new Uri(checkUrl);

此时checkUrl的值为 https://domain.co.il/HtmlPage.aspx?l=https://domain.co.il/uploads/Untitled-4-1024x377.png,而实际存在的资源链接是 https://domain.co.il/uploads/Untitled-4-1024x377.png(其中U为大写)。

当使用以下代码获取QueryString参数时:

string L = HttpUtility.ParseQueryString(AbsoluteUri.Query).Get("L");

得到的L值为 https://domain.co.il/uploads/untitled-4-1024x377.png(其中u为小写),无法匹配到正确的资源。

解决方案

问题根源在于你将整个URL转成了小写,导致QueryString里的参数值也被修改了。要保留原始参数的大小写,可按以下方式修改:

方案1:避免对整个URL转小写

直接使用原始URL构造Uri,不做全局小写转换:

Uri absoluteUri = HttpContext.Current.Request.Url;
string l = HttpUtility.ParseQueryString(absoluteUri.Query).Get("l");

此时获取到的l会保留原始参数的大小写,即https://domain.co.il/uploads/Untitled-4-1024x377.png。

方案2:单独处理URL路径(需保留路径小写时)

如果业务需要将URL的路径部分转小写,但要保留QueryString的原始大小写,可以拆分URL各部分分别处理:

var originalUrl = HttpContext.Current.Request.Url;
// 仅将路径转小写
string lowerCasePath = originalUrl.AbsolutePath.ToLower();
// 拼接回完整URL,保留原始QueryString
Uri absoluteUri = new Uri(originalUrl.Scheme + "://" + originalUrl.Authority + lowerCasePath + originalUrl.Query);
string l = HttpUtility.ParseQueryString(absoluteUri.Query).Get("l");

方案3:直接从Request.QueryString获取(最简便)

直接通过Request.QueryString获取原始参数值,这是最直接的方式,无需额外处理:

string l = HttpContext.Current.Request.QueryString["l"];

Request.QueryString会直接返回客户端传入的原始参数内容,不会修改任何大小写。

内容的提问来源于stack exchange,提问作者Amen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 00:50:13