C# Context.Request.RawUrl返回错误的部分编码url,如何修复?

C# Context.Request.RawUrl返回错误的部分编码url,如何修复?,c#,url,query-string,urlencode,C#,Url,Query String,Urlencode,因为我决定通过查询字符串传递特定记录的id,所以我加密了id(id=090ed4fe-daec-452d-b025-f664dcc1164d),并将其值附加到url 我们都知道/的url编码值是%2f。因此,在应用程序的特定实例上,一个id值(id=090ed4fe-daec-452d-b025-f664dcc1164d)经过加密后返回一个值: M2vaIbPkOqO6lw4jv%2bqE2f%2fhTrK495ny92uPcLBOJBNcMpg1RUme%2fvAo6LyKfdp9e 当我将

因为我决定通过查询字符串传递特定记录的id,所以我加密了id(
id=090ed4fe-daec-452d-b025-f664dcc1164d
),并将其值附加到url

我们都知道/的url编码值是%2f。因此,在应用程序的特定实例上,一个id值(
id=090ed4fe-daec-452d-b025-f664dcc1164d
)经过加密后返回一个值:

M2vaIbPkOqO6lw4jv%2bqE2f%2fhTrK495ny92uPcLBOJBNcMpg1RUme%2fvAo6LyKfdp9e
当我将鼠标悬停在a链接上时,我得到:

M2vaIbPkOqO6lw4jv+qE//hTrK495ny92uPcLBOJBNcMpg1RUme/vAo6LyKfdp9e
对于“加密和编码”部分,这是正确的。但是当我使用
Context.Request.RawUrl
属性检索我得到的url时:

M2vaIbPkOqO6lw4jv+qE/hTrK495ny92uPcLBOJBNcMpg1RUme/vAo6LyKfdp9e
所以问题是它从字符串中删除了一(1)/,因此我不能再解密字符串了

顺便说一句,我有这个模块已经好几个月了,从来没有遇到过这个问题。结果是我第一次有两(2)“/”(2f%2f)彼此相邻


请问,我是否可以让
Context.Request.RawUrl返回正确的字符串,并阻止它剥离一(1)/'?

听起来很像您正在遭受的影响,请参阅“删除重复斜杠”*值得一提的是,您的编码示例显示了
%2bqE2f%2f
,在第一个
2f
之前缺少一个
%
。这是否恰当

也就是说,我完全无法重现您的问题(我在下面展示的测试用例),所以您可以分享更多信息吗

WebForm1.aspx(为了简洁起见,跳过头/体/表单标记):




WebForm1.aspx.cs:

protected void Page_Load(object sender, EventArgs e)
{
    myLabel.Text = "<pre>" + Request.RawUrl + "</pre>";
}
受保护的无效页面加载(对象发送方,事件参数e)
{
myLabel.Text=”“+Request.RawUrl+”;
}
protected void Page_Load(object sender, EventArgs e)
{
    myLabel.Text = "<pre>" + Request.RawUrl + "</pre>";
}