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

URL查询字符串含#时参数值被截断问题求助

问题原因及修复方案

问题原因

URL中的#是**锚点(Fragment Identifier)**的专用标记,浏览器会将#及其后续内容识别为页面内的定位标识,不会将这部分内容发送给服务器。因此当blobName参数值包含#时,服务器只能接收到#之前的部分,导致参数被截断。

修复方法

1. 使用Razor内置方法自动编码参数

推荐使用Url.Action()生成完整URL,它会自动对参数值进行URL编码,避免手动拼接的错误:

<a class="btn btn-primary" href="@Url.Action("DownloadBlob", "FileDetails", new { dirName = data.FolderName, blobName = data.FileName })">

2. 手动编码参数值

如果需要手动拼接URL,使用Url.Encode()对参数值单独编码:

<a class="btn btn-primary" href="/FileDetails/DownloadBlob?dirName=@Url.Encode(data.FolderName)&blobName=@Url.Encode(data.FileName)">

编码后,参数中的#会被转换为%23,浏览器会将完整的参数值发送给服务器,ASP.NET会自动解码还原为原始字符串。

3. 服务器端验证

确保Action方法参数定义正确,无需手动解码:

public ActionResult DownloadBlob(string dirName, string blobName)
{
    // 直接使用blobName即可,已自动解码
    // 业务逻辑处理
    return File(...);
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 15:35:25