使用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