本帖最后由 freemangod 于 2010-10-27 15:48:25 编辑

解决方案 »

  1.   

    期待中哦 !整一晚了,我写的是ASP的登陆代码,但是采集的是ASP.net页面,所以我想这个版块的朋友们可能很容易解答一点,哪怕给点思路也挺好的。
    望版主不要删除哦!
      

  2.   

    ViewState中默认是有个散列码的,就是为了防止别人串改里边的内容,除非你拿到对方电脑上machine.config中的key,否则你肯定会失败。
      

  3.   

    实际上我觉得你不用修改Viewsate的数据,你只不过把这些数据都post和你的用户名和密码post回就行了。
      

  4.   

    就是你开个httpWatch之类的,看看发送的时候的内容,改为用程序发而已,页面的内容不用动,只不过是动态的指定用户名和密码就行了
      

  5.   


    viewstae在客户端源码可见,是base64格式的,应该是原样提交即可。为什么需要machin.config中的key呢
      

  6.   


    我并没有修改viewstate,而是原样post过去,它显示无效的页面状态。
      

  7.   

    是base64,但还有个为了防止别人修改而增加的一个散列码,这个散列码在生成的时候会用到machine.config中的key
      

  8.   

    1.首先  EnableViewStateMAC=true 情况下,ViewState才会附加一个散列码,默认情况下是没有的.
    2.楼主的问题不在于ViewState的,建议楼主用Fiddler去监控一下正常网页上操作提交到目标网站的过程中提交了多少信息,应该是你模拟的提交信息不全.
      

  9.   

    input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE"  
    value="/" />
    ViewState在客户端的保存形式,保存在一个ID为__VIEWSTATE的Hidden中,它的Value是使用Base64编码后的字符串。这个字符串实际上是一个对象序列化之后的结果。这个对象保存了整个页面的控件树的ViewState。可以使用一些工具将这个字符串进行解码查看其内容,比如ViewStateDecoder,ViewStateAnalyzer。
    Page对客户端请求进行处理,在处理的过程中先是将客户端提交的_VIEWSTATE反序列化为对象,调用Control的相关方法给所有的控件装载数据,这些数据是上次请求结束后控件的状态数据。在请求结束之前调用Control的相关方法得到所有控件的被修改过的状态数据,之后Page将其进行序列化,并返回给客户端。在Control中又具体调用StateBag类的方法完成状态数据的加载和保存。
    Event Validation. 这个特性会对 PostBack 的值进行验证,httpwatch抓包分析
      

  10.   

    真是太谢谢大家了,总之,httpwatch帮了我的忙,真是个好东西。在此感谢.