使用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。
只比较了一次测试的多个录音。 唯一不同的是Request Guids,我假设它是正常的,并且与SignalR连接有关的querystring参数'ConnectionToken'。 VS也没有拿起任何动态参数,所以不知道这是问题。 – thedev 2014-09-05 08:33:17
网站创建者使用许多技术来传递动态数据。 Visual Studio只理解其中的一些。您找到的项目的名称,即'ConnectionToken',听起来像是一个动态值,应该从某个响应中提取,然后在随后的请求中传递。 – AdrianHHH 2014-09-05 18:46:02