像很多前辈一样,我在工作的前几年做的是C/S结构的软件。当时的感觉是,页面能写什么复杂逻辑,肯定很简单,这已经过去4、5年了。最近一两年发现Web才是大势所趋,所以开始慢慢自己学习Web编程。但是没有相关的项目,总是感觉不得其门而入,不像Client程序那样,everthing is under control。最近项目需要开始真正开始写Web程序了,遇到了很多问题,记录下来,与有相同经历的难友们分享。
我是在.NET上开发的,很自然地会选择C#来写ASP.NET的网站。同时我还有个Client程序,想要使用HttpWebRequest模拟网页登陆。事情一开始很简单,两个label,两个textbox,一个Button就完成了。登陆的操作自然被写在Button_Click事件处理函数中了。一切看起来还不错。但是当我开始用客户端模拟的时候,发现出了问题——因为我用post方法提交数据给网页模拟登陆的时候,我的Button_Click程序不会被执行。浏览器是通过__VIEWSTATE告诉服务器哪些事件触发了,难道要我自己编辑__VIEWSTATE?我不知道这是否可能,也不知道成本有多高,于是选择了另外一条路。因为Page_Load总是会被执行的,所以如果把逻辑写在那里边而不是Button_Click中,不但普通用户可是像原来那样点击按钮登陆,客户端程序也可以很容易的模拟登陆。