C# Context.Request.RawUrl返回错误的部分编码url,如何修复?
因为我决定通过查询字符串传递特定记录的id,所以我加密了id(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=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>";
}