关于.net中参数的编码问题的一个细节

今天自己写了一个单点登录的解决方案:https://github.com/a14907/SSO_Solution.git

写的很粗糙,但还是实现了,就当练手了。过程中遇到了一些问题,这些问题不是关键问题,但是把我卡了很久,现在想起来就坑爹。

这里分享最主要的一个:参数的编码问题。

项目服务端server使用mvc,客户端使用webform(主要为了方便)。

再传参数的时候,我是加密了的,是的参数里面有一些加号这样的东西,那么就需要进行编码了。比如在服务端编码,在客户端进行解码;或者在客户端编码,在服务端解码。

我原来以为这样没啥问题。但是期间一直报错。我就很困惑了,于是单步调试,发现:加密参数里面的加号“+”变成了空格,使得参数在解密的时候失败,进一步查看运行中变量的变化,终于让我发现问题的所在了。

貌似进行编码的参数在传递之后,会自动解码,不需要自己再手动解码。而我手动解码了,也就意味着解码两次,这就出现前面提到的问题:“+”变成了空格引发失败。

好嘛这.net做的事情真是多。我没意料到竟然会自动帮我解码。那我接受这个设定,把代码改了,然后程序运行成功!!

注:这里的参数是指附加在Url之后的,如:http://www.a.com/?url=XXXXX,其中的XXX;

  以及利用WebRequest的Post方法写入到请求报文体的参数。

 

posted @ 2015-12-27 00:13  a14907  阅读(257)  评论(0)    收藏  举报