0

使用Visual Studio运行录制的Web测试时,初始化signalr连接会触发错误。Web性能测试:SignalR - 无法识别的用户身份

无法识别的用户身份。在 活动的SignalR连接期间,用户身份无法更改。

请求:

GET /Computer/signalr/connect? 
transport=foreverFrame& 
connectionToken=xxx& 
connectionData=yyy& 
tid=7& 
frameId=1 HTTP/1.1 

User-Agent : Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0) 
Accept : */* 
Accept-Language : en-GB 
Accept-Encoding : GZIP 
Host : test.host.com 
Cookie : __RequestVerificationToken_L01XTS1NYXN0ZXI1=YCuMgJ7WD6QNtHnUvgM4EFvVJ5lllR477xjaMAzFogypdqXEFV054ygGy0Spnqwo3LJDbDHyzGudF8QdTRZW30zcBHGh8oI7CEj2L0k01Eg1 

响应:

HTTP/1.1 403 Forbidden 
Pragma : no-cache 
Transfer-Encoding : chunked 
X-Content-Type-Options : nosniff 
Cache-Control : no-cache 
Content-Type : text/html 
Date : Wed, 03 Sep 2014 13:42:03 GMT 
Expires : -1 

更新:

貌似问题是协调在用户状态与活动连接的变化。

如果在存在活动连接时用户的身份验证状态发生更改,用户将收到一个错误消息,指出“在活动的SignalR连接期间,用户身份无法更改。

在这种情况下,您的应用程序应重新连接到服务器以确保连接标识和用户名是协调的。

不确定如何在webtest期间协调用户名和连接ID。

回答

1

我怀疑一个动态参数还没有被处理过,所以当测试被执行时服务器在测试被记录时提供了一个值。服务器然后检测到请求正在传递意外的值(即旧值)并创建该消息。

有几个网页提供有关调试Web性能测试的建议。一种技术是记录两个尽可能接近完全相同的测试版本。然后使用文本比较程序来比较两个“.webtest”文件。有时记录第三个以不同用户身份登录的测试,但其他方面尽可能与其他两个测试相同。然后比较这第三个“.webtest”与其他人。希望这个比较可以表明一个或多个以前没有注意到的动态参数。

+0

只比较了一次测试的多个录音。 唯一不同的是Request Guids,我假设它是正常的,并且与SignalR连接有关的querystring参数'ConnectionToken'。 VS也没有拿起任何动态参数,所以不知道这是问题。 – thedev 2014-09-05 08:33:17

+0

网站创建者使用许多技术来传递动态数据。 Visual Studio只理解其中的一些。您找到的项目的名称,即'ConnectionToken',听起来像是一个动态值,应该从某个响应中提取,然后在随后的请求中传递。 – AdrianHHH 2014-09-05 18:46:02