jmeter中的相关问题:所需的防伪形式字段“__RequestVerificationToken”不存在

问题描述 投票:0回答:1

我试图用jmeter生成性能测试脚本。

这里的一个页面需要__RequestVerificationToken作为一个字段,需要从上一页生成。我们使用正则表达式提取器来捕获令牌并在后续请求中传递相同的令牌。在视图结果树中,我可以看到适当的请求验证令牌但我们收到错误

所需的防伪表单字段“__RequestVerificationToken”不存在。

这是我们使用的正则表达式提取器。 enter image description here

在结果树中,请求使用令牌enter image description here发送

这是通过cookie传递的请求ID。这与以前的要求不同。这个系统genearted.enter image description here

请帮助我们,我们坚持了这两周

在我们的应用程序中抛出以下错误,

System.Web.Mvc.HttpAntiForgeryException (0x80004005): The required anti-forgery form field "__RequestVerificationToken" is not present.
     at abc.def.Web.Filters.ApplicationHandleErrorAttribute.OnException(ExceptionContext filterContext)
     at System.Web.Mvc.ControllerActionInvoker.InvokeExceptionFilters(ControllerContext controllerContext, IList`1 filters, Exception exception)
     at System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass21.<BeginInvokeAction>b__19(AsyncCallback asyncCallback, Object asyncState)
     at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResultBase`1.Begin(AsyncCallback callback, Object state, Int32 timeout)
     at System.Web.Mvc.Async.AsyncControllerActionInvoker.BeginInvokeAction(ControllerContext controllerContext, String actionName, AsyncCallback callback, Object state)     at System.Web.Mvc.Controller.<BeginExecuteCore>b__1c(AsyncCallback asyncCallback, Object asyncState, ExecuteCoreState innerState)
     at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncVoid`1.CallBeginDelegate(AsyncCallback callback, Object callbackState)
     at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResultBase`1.Begin(AsyncCallback callback, Object state, Int32 timeout)
     at System.Web.Mvc.Controller.BeginExecuteCore(AsyncCallback callback, Object state)     at abc.def.Web.Base.BaseController.BeginExecuteCore(AsyncCallback callback, Object state)
     at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResultBase`1.Begin(AsyncCallback callback, Object state, Int32 timeout)
     at System.Web.Mvc.Controller.BeginExecute(RequestContext requestContext, AsyncCallback callback, Object state)
     at System.Web.Mvc.MvcHandler.<BeginProcessRequest>b__4(AsyncCallback asyncCallback, Object asyncState, ProcessRequestState innerState)
     at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncVoid`1.CallBeginDelegate(AsyncCallback callback, Object callbackState)
     at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResultBase`1.Begin(AsyncCallback callback, Object state, Int32 timeout)
     at System.Web.Mvc.MvcHandler.BeginProcessRequest(HttpContextBase httpContext, AsyncCallback callback, Object state)
     at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
     at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) 
asp.net-mvc jmeter performance-testing
1个回答
0
投票

看一下图片,似乎某处某处您的提取失败,或者您使用的是硬编码值而不是提取的值。我建议使用Debug SamplerView Results Tree监听器组合双重检查提取的值,并确保在HTTP请求中使用${RequestVerificationToken}


此外,如果变量来自HTTP Cookie,你可以直接从HTTP Cookie Manager得到它,如:

  1. 将下一行添加到user.properties文件(位于JMeter安装的“bin”文件夹中) CookieManager.save.cookies=true
  2. 重新启动JMeter以获取更改
  3. 如果需要,请将cookie值作为${COOKIE____RequestVerificationToken}

更多信息:HTTP Cookie Manager Advanced Usage - A Guide

© www.soinside.com 2019 - 2024. All rights reserved.