Asp.net mvc 4 如何对URL参数进行编码?

Asp.net mvc 4 如何对URL参数进行编码?,asp.net-mvc-4,Asp.net Mvc 4,我在类库中使用了这个方法,并从控制器调用了这个方法。但是我传递的值不是编码。我找不到背后的原因 类库 using System.Web; public static class CommonLogic { public static string UrlEncode(string value) { return HttpUtility.UrlEncode(value); } } 控制器 var test = CommonLogic.UrlEn

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

类库

using System.Web;

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

var test =   CommonLogic.UrlEncode("2")
测试值为“2”,且未编码

更新:

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

“2”不需要进行URL编码。它不是URL中的保留符号。尝试测试字符串,例如“字符“2”是RFC3986中定义的“未保留”集的一部分

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

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

如何使用RijndaelManaged在C#中执行简单对称加密的示例:


请确保对加密密钥保密。

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


概述哪些字符必须编码才能成为URL的一部分。

编码后仍然是“2”“。你还期待什么吗?如果是,那又怎样?哦,我刚刚意识到它只会在Url中编码特殊字符。我真正想要的是编码值2,因为它是users表的主键,我不想在Url中公开它。相反,我需要将其编码为值。还有其他方法吗?如何(以何种方式)您想对其进行编码吗?您需要的是加密或哈希而不是编码。即使您能够对其进行编码,人们仍然可以解码并查看其值,因此编码对您所需的内容没有任何用处。我希望以任何方式对其进行编码,但我需要使用带有编码算法的密钥。我将在web.config中定义密钥。可能是Encrypt Key和Decrypt Key。有什么想法吗?+1,作为建议。你能看到我对@zespri comment的评论吗?好的,你应该重写这个问题来解释你真正想要的是什么。我认为你使用的是get请求,如果你试图更改存储在实体中的内容,你实际上想使用post,如果你只是试图在整个站点移动时维护用户会话。我不知道你的进展有多远,所以我希望这不会冒犯你,但听起来好像阅读会话和cookie是正常的?我将使用GET方法。但是我想加密url中的值,它不应该作为普通值公开。我觉得RijndaelManaged有点过时rkill的一个句号简单查询字符串可以解决这个问题,因为我有同样的问题。