如何编码URL参数?

时间:2013-04-18 02:21:00

标签: asp.net-mvc-4

我在类库中使用此方法并从控制器调用该方法。但我传递的价值不是编码。我无法追查其背后的原因。

班级图书馆

using System.Web;

public static class CommonLogic    
{
   public static string UrlEncode(string value)
    {
        return HttpUtility.UrlEncode(value);
    }
}

控制器

var test =   CommonLogic.UrlEncode("2")

测试值为“2”且未编码。

更新

我刚才从下面的评论中意识到了这个原因。我真正需要的不是编码而是加密和解密。我不希望Url参数作为纯文本公开,而我希望它是加密值,稍后在控制器中我将在处理该值之前再次解密它。有什么想法?

3 个答案:

答案 0 :(得分:0)

“2”不需要是UrlEncoded。它不是Urls中的保留符号。尝试测试一个字符串,例如“<”。

答案 1 :(得分:0)

字符“2”是RFC3986 https://tools.ietf.org/html/rfc3986#section-2.3

中定义的“未保留”集的一部分

“无保留”不需要进行百分比编码。

关于您在网址中公开它的评论:编码是不是加密。如果您不希望在URL中公开整数用户ID,则可能需要为用户提供另一个可以公开的唯一标识符。例如,用户表中的唯一随机字符串(类似于youtube.com标识视频的方式)或GUID。

如何使用RijndaelManaged在C#中进行简单的对称加密: Simple insecure two-way "obfuscation" for C#

确保密码保密。

答案 2 :(得分:0)

UrlEncode方法的目的是将字符串转换为可在URL中使用的格式。 “2”已经可以在URL中使用,因此这是一个空值转换,它将导致相同的值“2”。

Section 2 of RFC 3986概述了必须编码哪些字符才能成为网址的一部分。