因此,我正在ASP.NET上使用WebAPI编写REST应用程序。我绊倒了一个问题。WebAPI仅部分解码URL编码字符串
在PHP我使用的是用urlencode功能导致
编码字符串原来的base64通过进行urlencode运行它之后是
kA+1n8i00qcJPNgPUXq8YqerScbQOw5Hvb3/WubyGTc=
在PHP我得到: - kA%2B1n8i00qcJPNgPUXq8YqerScbQOw5Hvb3%2FWubyGTc%3D
在调试之后,我检查了fiddler,并确实发送了正确的URLEncoded字符串...
现在,当它到达ASP.NET MVC的WebAPI我得到: -
kA+1n8i00qcJPNgPUXq8YqerScbQOw5Hvb3/WubyGTc%3
所以它看起来像的WebAPI或MVC正试图通过自己做一些草书预URL解码,但是它得到两个问题与它: -
- 它仅部分解码字符串,所以+和/符号得到正确地转换,但=不
- 这似乎是截断从%3D这导致了d在%3中,这不是有效的URL字符。
有没有人遇到过这个问题?要复制它,只需创建
public TokenAPI Get(Guid caller, Guid id, string ip, string signature, Guid eventID)
{
}
一个Web应用程序,并传入值
/api/GenerateToken?id=d9a2057c-c228-40d4-a9a9-5d7a4da4984b&caller=e1af32bb-ac84-4f45-b4d6-67f7543ffab2&ip=127.0.0.1&eventID=f6d71c3d-ef00-41e1-8dec-a3a77bdf7484&signature=kA%2B1n8i00qcJPNgPUXq8YqerScbQOw5Hvb3%2FWubyGTc%3D
然后检查签名参数,你会发现它只是部分本身URLDecoded .. 。
任何指针将衷心感谢
呃,好的,谢谢@DarinDimitrov我会试着弄清楚接下来会发生什么。删除所有过滤器等等将回发任何调查结果。 – 2012-08-14 09:58:36