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