asp.net Request获取参数遇到的坑!!!

遇到的问题:

本地测试正常,线上出问题

下面两个请求:

1、/GuanWangBao/UserList.aspx?LeaguerID=0
2、/GuanWangBao/UserList.aspx

后端使用 Request.["LeaguerID"]  接收参数,前者接收到的是0,而后者接收到的是738(通过打印日志知道)

但是,本地测试的时候  这两个参数得到的值都是0(正常的)

花费了一上午的时间,才找出问题:

话说无巧不成书,也是个巧合导致的这个坑,但是归根到底还是代码习惯的问题!

原因是:

有个知识点不知道: Request从这几个集合取数据是有顺序的,从前到后

的顺序依次是 QueryString,Form,Cookies,最后是ServerVariables(这个是查资料才知道的)

使用Request获取参数的时候,刚好Cookie里面有一个和参数名一样的cookie叫LeaguerID,这样就导致,

请求 /GuanWangBao/UserList.aspx获取到的LeaguerID是cookie里的值

本地测试之所以是正常的,是因为本地开发域名里面没有写cookie,写cookie的域名是固定的(正式服域名)

所以,解决办法就是:把Request["LeaguerID"]换成Request.QueryString["LeaguerID"] 就可以了

总结:良好的代码习惯平时看来可能没什么问题,但是一旦出现问题,很难发现(写给自己);另一方面是自己基础不牢,记录一下,长个记性

原文地址:https://www.cnblogs.com/wangxiaorang/p/14302885.html