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

使用Server.UrlEncode编码URL后Response.Redirect出现404错误如何解决?

解决Server.UrlEncode导致的HTTP 404错误

哦,这个问题我碰到过不少次——你犯了一个很常见的错误:把整个URL都用Server.UrlEncode编码了,这就导致服务器找不到正确的资源,自然返回404了。

问题根源

Server.UrlEncode的作用是编码查询参数的值,而不是整个URL(包括路径、参数名这些部分)。当你对整个Main/Dashboard_User.aspx?=编码后,它会变成类似Main%2fDashboard_User.aspx%3f%3d的字符串,服务器会把这个当成一个完整的文件名去查找,而你的项目里根本没有这个名字的文件,所以就触发了404错误。

正确的做法

根据你的需求,分两种情况处理:

1. 没有查询参数的情况

如果只是要跳转到Main/Dashboard_User.aspx,完全不需要编码,直接跳转即可:

Response.Redirect("Main/Dashboard_User.aspx");

2. 带有查询参数的情况

如果后续需要添加参数(比如userId=123&username=张三),只需要对参数的值进行编码,路径和参数名保持原样:

// 假设要传递userId和username两个参数
string encodedUserId = Server.UrlEncode("123");
string encodedUsername = Server.UrlEncode("张三");

// 只拼接编码后的参数值到URL中
Response.Redirect($"Main/Dashboard_User.aspx?userId={encodedUserId}&username={encodedUsername}");

这样服务器就能正确解析路径Main/Dashboard_User.aspx,同时也能正确读取编码后的参数值,不会出现404问题。

额外提醒

如果是在ASP.NET Core中,推荐使用Uri.EscapeDataString或者QueryHelpers.AddQueryString方法来处理参数编码,不过在传统的ASP.NET WebForms里,Server.UrlEncode依然是可靠的选择——只要记住只编码参数值就好。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 08:31:27