JMeter在ASP MVC 5项目中未对RequestVerificationToken进行识别/未将其分配给变量


问题内容

我目前需要针对Web解决方案的负载测试,该测试需要在首页(欢迎页面)中进行用户身份验证。

当我寻找在FireFox中使用FireBug与登录凭据一起传递的POST登录参数时,我发现Password,TenantName,UserName和__RequestVerificationToken是随其成功登录而传递的参数。

我需要使用JMETER模拟此过程。

因此,我已经进行了HTTP REQUEST(访问登录页面)以使用JMETER导航到该页面,该页面可以成功工作。

在HTTP REQUEST(访问登录页面)中,我添加了一个正则表达式提取器以提取令牌,因为必须将令牌与登录信息一起传递。

  • 参考名称:REQUEST_VERIFICATION_TOKEN
  • Reg表达式:输入名称=“ __ RequestVerificationToken”类型=“隐藏” value =“([[A-Za-z0-9 + = /-\ ] +?)”_
  • 模板:$ 1 $
  • 比赛编号:1
  • 默认值:(空白)

正则表达式提取器

并且我添加了一个单独的HTTP请求(登录到Web)和参数,如下所示;

  • 密码: $ {Password}
  • 租户名称: $ {TenantName}
  • 使用者名称: $ {Username}
  • __RequestVerificationToken: $ {REQUEST_VERIFICATION_TOKEN}

但是当我运行它时,在“查看结果树”下,响应数据生成为“无法解密反伪造令牌…”

当我检查“查看结果树”下的“请求”显示时,它显示为

POST数据:
密码= 123456&TenantName = tenant&Username = admin&__ RequestVerificationToken
=%24%7BREQUEST_VERIFICATION_TOKEN%7D *

我在“请求”中意识到未初始化RequestVerificationToken的值的位置。

我过去两天都在通过博客寻找解决方案,但最终在没有适当帮助的情况下,我倾向于在此处发布此问题。

这是一个有用的参考链接,在一定程度上是我使用的参考链接:http :
//build-failed.blogspot.com/2012/07/load-testing-aspnet-mvc-
part-3-jmeter.html?showComment =
1417672985397#c6427302313332055578

有人可以协助我解释为什么RequestVerificationToken无法正确提取或初始化为变量吗?

(附言:老实说,在您提供宝贵的答复时,请足够好以为我是JMeter的初学者)


问题答案:

在正则表达式中,“-”具有含义,并且必须在__RequestVerificationToken值中正确进行转义。

因此,正确的正则表达式为

input name="__RequestVerificationToken" type="hidden" value="([A-Za-z0-9+=/\-\_]+?)"

我创建了一个临时变量并在正则表达式上方进行了验证。它工作正常。如果对您不起作用,请尽可能提供HTTP响应。