0

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

类库

using System.Web;

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

控制器

var test =   CommonLogic.UrlEncode("2")

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

更新:

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

4

3 回答 3

0

“2”不需要进行 UrlEncoded。它不是 Urls 中的保留符号。尝试测试诸如“<”之类的字符串。

于 2013-04-18T02:25:53.717 回答
0

字符“2”是 RFC3986 https://www.rfc-editor.org/rfc/rfc3986#section-2.3中定义的“未保留”集的一部分

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

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

如何使用 RijndaelManaged 在 C# 中进行简单对称加密的示例: 简单不安全的双向数据“混淆”?

确保对加密密钥保密。

于 2013-04-18T02:27:30.580 回答
0

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

RFC 3986 的第 2 节概述了必须对哪些字符进行编码才能成为 URL 的一部分。

于 2013-04-18T02:30:16.110 回答