q789789q 发表于 2008-4-22 10:30:35

我在网上,找了一下,有相关,不过好象也没说怎么改:

LoadRunner 如何對 ASP.NET ViewState 做關聯?

ViewState 是 ASP.NET 用來存放網頁上伺服器端控制項 (server control) 狀態的一個隱藏欄位,所以當你檢視你的 ASP.NET 網頁原始檔,會發現一個 "__VIEWSTATE" 的隱藏欄位,其值是一堆看不懂的字元,就如同下列的例子。

value="dDwxNTgzOTU2ODA7dDw7bDxpPDE+Oz47bD
x0PDtsPGk8MT47PjtsPHQ8QDA8cDxwPGw8UGFnZU
NvdW50O18hSXRlbUNvdW50O18hRGF0YVNvdXJjZ
Ul0ZW1Db3VudDtEYXRhS2V5czs+O2w8aTwxPjtpPD
g+O2k8OD47bDw+Oz4+Oz47Ozs7Ozs7OztAMDxAMD
xwPGw8SGVhZGVyVGV4dDtEYXRhRmllbGQ7U29yd
EV4cHJlc3Npb247UmVhZE9ubHk7PjtsPHB1Yl9pZDtwd=="/>

當使用 LoadRunner VuGen 錄製含有 ViewState 的 ASP.NET網站應用時,就會需要做關聯 (Correlation)。

其關聯的範例腳本如下:

web_reg_save_param("MyViewState","LB=\"__VIEWSTATE\" value=\"","RB=\"",LAST);

假如 ASP.NET 網頁上的控制項一多,ViewState 會變得很大,所以通常也會需要使用 web_set_max_html_param_len 函數將參數 (Parameter) 的長度給適度地放大:

web_set_max_html_param_len("2048");

其他關於 ViewState 的參考資料:ViewState: All You Wanted to Know


首先,要设置web_set_max_html_param_len("900000");
因为ViewState可能会很大!
其次,记录下ViewState到某个参数,注意"LB/IC=ViewState\",何必在意ViewState1还是ViewState2呢
web_reg_save_param("MyTransaction_ViewState6",
                "LB/IC=ViewState\" value=\"",
                "RB/IC=\"",
                "Ord=1",
                "Search=Body",
                "RelFrameId=1",
                LAST);

然后把整个一个参数传递到ViewState需要的地方
web_submit_data("ThisIsMyPage.aspx_6",
                "Action=http://abcd.aspx?dskfks=-sdfksd",
                "Method=POST",
                "RecContentType=text/html",
                "Referer=http://sdfkkskdfksdfkks.aspx",
                "Snapshot=t12.inf",
                "Mode=HTML",
                ITEMDATA,
                "Name=__VIEWSTATE",
                "Value={MyTransaction_ViewState6}",               
                ENDITEM,
                "Name=MKTDropDown", "Value=U647110", ENDITEM,
                "Name=GetLog", "Value=Get Log", ENDITEM,
                EXTRARES,
                LAST);

iori 发表于 2008-4-22 10:37:11

web_reg_save_param("Siebel_Analytic_ViewState3",
                "LB/IC=ViewState\" value=\"", //最后加上逗号~~~~~
                "RB/IC=\"",
                "Ord=1",
                "Search=Body",
                "RelFrameId=1",
                LAST);
另外把你的replay log放上来

q789789q 发表于 2008-4-22 10:40:58

web_reg_save_param("Siebel_Analytic_ViewState3",
                "LB/IC=ViewState\" value=\"", //最后加上逗号~~~~~
                "RB/IC=\"",
                "Ord=1",
                "Search=Body",
                "RelFrameId=1",
                LAST);
这些我弄好了,还是一样
Action.c(32): 警告 -26378: 未接收到任何具有“RelFrameID=1.1”的缓冲区。指定此 RelFrameID 的 web_reg_save_param/reg_find 请求将作为“找不到”处理       
Action.c(32): 错误 -26377: 找不到请求的参数“Siebel_Analytic_ViewState3”的匹配项。检查请求的边界是否存在于响应数据中。此外,如果要保存的数据超过 1024 个字节,请使用 web_set_max_html_param_len 增加参数大小       
Action.c(32): web_submit_form("Default.aspx") 最高严重级别为“ERROR”,40321 个正文字节,4405 个标头字节       
正在结束操作 Action。
正在结束迭代 1。
正在结束 Vuser...
正在开始操作 vuser_end。
正在结束操作 vuser_end。
Vuser 已终止。

[ 本帖最后由 q789789q 于 2008-4-22 12:39 编辑 ]

iori 发表于 2008-4-22 11:11:58

你这个关联是手动加上的吗?你确认这里是否需要关联?你去掉试试

q789789q 发表于 2008-4-22 11:18:37

web_reg_save_param("Siebel_Analytic_ViewState3",
                "LB/IC=ViewState\" value=\"",
                "RB/IC=\"",
                "Ord=1",
                "RelFrameId=1.1",
                "Search=Body",
                LAST);

全部去掉后,出现了Action.c(53): 错误 -26612: 对于“http://192.168.100.201/yearreport/MainTop.aspx”,HTTP 状态代码=500 (Internal Server Error)       
Action.c(53): web_submit_data("MainTop.aspx") 最高严重级别为“ERROR”,6520 个正文字节,241 个标头字节       
正在结束操作 Action。

不是我加的,它自己加的

q789789q 发表于 2008-4-22 11:20:47

我把,:下面2个全去掉,就脚本正常了

1.
        web_reg_save_param("Siebel_Analytic_ViewState3",
                "LB/IC=ViewState\" , value=\"",
                "RB/IC=\"",
                "Ord=1",
                "Search=Body",
                "RelFrameId=1",
                LAST);


2.
        web_submit_data("MainTop.aspx",
                "Action=http://192.168.100.201/yearreport/MainTop.aspx",
                "Method=POST",
                "RecContentType=text/html",
                "Referer=http://192.168.100.201/yearreport/MainTop.aspx",
                "Snapshot=t38.inf",
                "Mode=HTML",
                ITEMDATA,
                "Name=__EVENTTARGET", "Value=ctl00", ENDITEM,
                "Name=__EVENTARGUMENT", "Value=", ENDITEM,
                "Name=__VIEWSTATE", "Value={Siebel_Analytic_ViewState3}", ENDITEM,
                "Name=__EVENTVALIDATION", "Value=/wEWAgLyvPu4CQKhwImNC71vVjxAJ0Xc2EzUPTEkYqRD+OBx", ENDITEM,
   
                LAST);

iori 发表于 2008-4-22 11:25:46

然后你自动关联一下,scan action for correllations--correlations results选择correlate

[ 本帖最后由 iori 于 2008-4-22 11:27 编辑 ]

iori 发表于 2008-4-22 11:30:54

回复 26# 的帖子

这个MainTop.aspx是什么页面?主页?脚本中不需要?

q789789q 发表于 2008-4-22 11:34:30

是把这2个       
web_reg_save_param("Siebel_Analytic_ViewState3",
web_submit_data("MainTop.aspx",
的内容全部去掉,再关联,还是只去掉第一个

去掉后scan action for correllations--correlations results选择correlate?这个在什么地方操作

q789789q 发表于 2008-4-22 11:43:28

这个MainTop.aspx是什么页面?主页?脚本中不需要?

MainTop.aspx是置顶页面,做为主页的一部分,我点注销的时候,会调用到它

iori 发表于 2008-4-22 12:31:10

回复 29# 的帖子

去掉web_reg_save_param这个函数,回放脚本,然后ctrl+F8,出现需要关联的参数,右键选择correlate

q789789q 发表于 2008-4-22 12:52:02

还是不行,老哥,我快晕了

AJan1000 发表于 2008-4-22 13:15:13

原帖由 q789789q 于 2008-4-22 11:34 发表 http://bbs.51testing.com/images/common/back.gif
是把这2个       
web_reg_save_param("Siebel_Analytic_ViewState3",
web_submit_data("MainTop.aspx",
的内容全部去掉,再关联,还是只去掉第一个

去掉后scan action for correllations--correlations results选择 ...

老兄,你那个ViewState的关联时是LR8.1自动关联的,一般不需要的。
你现在先把下面图片当中的复选项去掉,然后你再重新录制一次。
再运行试试。

q789789q 发表于 2008-4-22 13:24:40

我按你说的做了,可是还是出现:
Action.c(46): 错误 -27995: 找不到请求的链接(“文本=工作情况年报表”)       
Action.c(46): web_link("工作情况年报表") 最高严重级别为“ERROR”,0 个正文字节,0 个标头字节       

AJan1000 发表于 2008-4-22 13:43:31

原帖由 q789789q 于 2008-4-22 13:24 发表 http://bbs.51testing.com/images/common/back.gif
我按你说的做了,可是还是出现:
Action.c(46): 错误 -27995: 找不到请求的链接(“文本=工作情况年报表”)       
Action.c(46): web_link("工作情况年报表") 最高严重级别为“ERROR”,0 个正文字节 ...

(“文本=工作情况年报表”)???“文本=”?是不是Web_Link()当中的参数被你改掉了,是不是要改为“text=工作情况年报表”。
比如你之前代码当中的web_link("常用工作指标",
                "Text=常用工作指标",
                "Snapshot=t35.inf",
                EXTRARES,
                "Url=/yearreport/images/button.gif", "Referer=http://192.168.100.201/yearreport/Modules/ZhiBiao/ZhiBiao.aspx?biaoji=1", ENDITEM, LAST);
应该是能正常通过的巴,和之前的这个对比一下看看

q789789q 发表于 2008-4-22 14:02:59

我回放后的脚本跟,原来录制的脚本比对了,是一样的

mojinde 发表于 2008-6-7 19:33:45

ViewState关联是比较麻烦,怎么就没有下文了?

shenqunqun 发表于 2009-5-21 16:27:56

怎么没有人回复了呢,,我现在也是一样的问题,有人知道怎么解决不?
页: 1 [2]
查看完整版本: 脚本回放时出现了错误,是为什么