LoadRunner的-26612报错解决过程(关联错误)

LoadRunner报-26612错误

Action.c(172): Error -26612: HTTP Status-Code=500 (Internal Server Error) for "http://……./MyCustomers.aspx"  [MsgId: MERR-26612]
Action.c(172): web_submit_data("MyCustomers.aspx_2") highest severity level was "ERROR", 20124 body bytes, 2957 header bytes  [MsgId: MMSG-26388]

查看服务器日志详细信息
ArgumentException 
   Invalid postback or callback argument. Event validation is enabled using 
enableEventValidation="true"/> in configuration or <%@ Page EnableEventValidation="true" %> in a page. 
For security purposes, this feature verifies that arguments to postback or callback events originate from 
the server control that originally rendered them. If the data is valid and expected, use the 
ClientScriptManager.RegisterForEventValidation method in order to register the postback or callback data 
for validation. at System.Web.UI.ClientScriptManager.ValidateEvent(String uniqueId, String argument) at 
System.Web.UI.WebControls.DropDownList.LoadPostData(String postDataKey, NameValueCollection 
postCollection) at System.Web.UI.Page.ProcessPostData(NameValueCollection postData, Boolean fBeforeLoad) 
at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean 
includeStagesAfterAsyncPoint)  
  
这段英文的翻译:
回发或回调参数无效。在配置中使用 或在页面中使用 <%@ Page EnableEventValidation="true" %> 启用了事件验证。出于安全目的,此功能验证回发或回调事件的参数是否来源于最初呈现这些事件的服务器控件。如果数据有效并且是预期的,则使用 ClientScriptManager.RegisterForEventValidation 方法来注册回发或回调数据以进行验证。

问题应该是出在脚本中有应该关联的值没有关联
 
   

解决方案:
1、用甲账号密码登录录制的一号脚本,回放的时候不会产生该问题,但在参数化后,使用乙账号登录会产生该问题
——
首先,手工操作验证乙账号能够成功完成整个流程——可以。
接着,用乙账号登录并录制二号脚本,对比两段脚本的不同之处,重新打开一号脚本用乙账号运行,在出现问题的submit字段单句执行,提示问题时,用二号脚本的语句替换,找到出错原因:
(1)viewstate和EVENTVALIDATION没有关联
(2)用户账号对应的ID序列进行参数化时使用的是从数据库中查询到序列,数据库中ID序列中字母为大写字母,而脚本的提交中必须使用小写字母

2、先修改第二个问题,将数据库中值复制到word中,用全部替换为小写即可
LoadRunner的-26612报错解决过程(关联错误)_第1张图片

3、解决viewstate和EVENTVALIDATION关联
 
    
web_set_max_html_param_len("3214");
 
/*我的客户*/
web_url("MyCustomers.aspx",
"URL=http://…….aspx",
"Resource=0",
"RecContentType=text/html",
"Referer=http://…….aspx",
"Snapshot=t41.inf",
"Mode=HTML",
LAST);
 
 
/*订单查找*/
web_reg_save_param("Siebel_Analytic_ViewState1",
"LB/IC=ViewState\" value=\"",
"RB/IC=\"",
"Ord=1",
"Search=Body",
"RelFrameId=1",
LAST);
web_reg_save_param("EVENTVALIDATION",
"LB/IC=EVENTVALIDATION\" value=\"",
"RB/IC=\"",
"Ord=1",
"Search=Body",
LAST);
 
web_submit_data("MyCustomers.aspx_2",
"Action=http://…….aspx",
"Method=POST",
"RecContentType=text/html",
"Referer=http://…….aspx",
"Snapshot=t42.inf",
"Mode=HTML",
ITEMDATA,
//…………………………
"Name=__VIEWSTATE", "Value={Siebel_Analytic_ViewState1}", ENDITEM,
"Name=__VIEWSTATEGENERATOR", "Value=F4BD44E3", ENDITEM,
"Name=__EVENTVALIDATION", "Value={EVENTVALIDATION}", ENDITEM,
//…………………………
"Name=ddlAccountList", "Value={LoginIDCode}", ENDITEM,
LAST);

加入web_reg_save_param(),但提示找不到符合条件的值
     1)、手工操作检查改流程是否可行——可行
     2)、检查关联语句 web_reg_save_param()的左右边界——无误
     3)、此时关联语句的位置为submit语句前面,但是submit页面确实能找到该值,考虑可能在url页面中,在tree模式下查看上一个MyCustomers.aspx页面源码,发现能找到viewstate和EVENTVALIDATION,将web_reg_save_param()位置提到该语句前面,提示无法找到EVENTVALIDATION,但不再出现“找不到viewstate”的提示。
     4)、加大参数长度web_set_max_html_param_len("99999");

问题解决。

你可能感兴趣的:(【LoadRunner】)