Microsoft.AspNetCore.SignalR.PersistentConnection.TryGetConnectionId C# (CSharp) Method

TryGetConnectionId() private method

private TryGetConnectionId ( HttpContext context, string connectionToken, string &connectionId, string &message, int &statusCode ) : bool
context HttpContext
connectionToken string
connectionId string
message string
statusCode int
return bool
        internal bool TryGetConnectionId(HttpContext context,
                                         string connectionToken,
                                         out string connectionId,
                                         out string message,
                                         out int statusCode)
        {
            string unprotectedConnectionToken = null;

            // connectionId is only valid when this method returns true
            connectionId = null;

            // message and statusCode are only valid when this method returns false
            message = null;
            statusCode = 400;

            try
            {
                unprotectedConnectionToken = ProtectedData.Unprotect(connectionToken, Purposes.ConnectionToken);
            }
            catch (Exception ex)
            {
                Logger.LogInformation(String.Format("Failed to process connectionToken {0}: {1}", connectionToken, ex));
            }

            if (String.IsNullOrEmpty(unprotectedConnectionToken))
            {
                message = String.Format(CultureInfo.CurrentCulture, Resources.Error_ConnectionIdIncorrectFormat);
                return false;
            }

            var tokens = unprotectedConnectionToken.Split(SplitChars, 2);

            connectionId = tokens[0];
            string tokenUserName = tokens.Length > 1 ? tokens[1] : String.Empty;
            string userName = GetUserIdentity(context);

            if (!String.Equals(tokenUserName, userName, StringComparison.OrdinalIgnoreCase))
            {
                message = String.Format(CultureInfo.CurrentCulture, Resources.Error_UnrecognizedUserIdentity);
                statusCode = 403;
                return false;
            }

            return true;
        }