编码Url后出现HTTP 404错误

时间:2013-07-22 14:51:11

标签: c# asp.net iis

当我使用HttpUtility.UrlEncode对Url进行编码时,我最终收到服务器错误。

ASP.Net代码:

NavigateUrl=<%# HttpUtility.UrlEncode(string.Concat("UpdateMember.aspx","?groupId=", DataBinder.Eval(Container.DataItem, "GroupID").ToString())) %> 

网址:

http://localhost/UITest/MM/UpdateMember.aspx%3fgroupId%3d0032409901

导致“HTTP错误404.0 - 未找到 您要查找的资源已被删除,名称已更改或暂时不可用。“

然而使用:

NavigateUrl=<%# string.Concat("UpdateMember.aspx","?groupId=", DataBinder.Eval(Container.DataItem, "GroupID").ToString()) %> 

结果是网址:

http://localhost/UITest/MM/UpdateMember.aspx?groupId=0032409901

效果很好。我做错了吗?

2 个答案:

答案 0 :(得分:1)

您不应对整个网址进行编码,至少不是第一个"?"符号。如果你编码?然后,您的应用程序会查找名为&amp;的文件。扩展“UpdateMember.aspx%3fgroupId%3d0032409901”,它不存在。

可能这是你应该做的。

http://localhost/UITest/MM/UpdateMember.aspx?groupId%3d0032409901

答案 1 :(得分:0)

HttpUtility.UrlEncode()对字符串进行URL编码

这意味着它会从字符串中转义所有特殊字符,以便您可以将其作为URL的一部分插入,而不会将任何字符解析为URL修饰符。

在将仲裁文本作为URL的一部分插入时,您可以使用此类转义函数。