public DefaultHandshakeNegotiator(IHostConfiguration hostConfiguration, IProtocolSelector protocolSelector, IQueryParametersBuilder queryParametersBuilder, IRouteParametersBuilder routeParametersBuilder, IRouteResolver routeResolver, ISubProtocolNegotiator subProtocolNegotiator)
 {
     _hostConfiguration = hostConfiguration;
     _protocolSelector = protocolSelector;
     _queryParametersBuilder = queryParametersBuilder;
     _routeParametersBuilder = routeParametersBuilder;
     _routeResolver = routeResolver;
     _subProtocolNegotiator = subProtocolNegotiator;
 }
        private Uri GetRequestUri <T>(QueryCommand <T> command)
        {
            string requestUri = this.GetMessageBase <T>();
            List <KeyValuePair <string, string> > queryStringParameters = new List <KeyValuePair <string, string> >();

            if (command.QueryParameters != null)
            {
                IQueryParametersBuilder queryParametersBuilder = this.queryParametersBuilderFactory.GetParameterBuilder(command.QueryParameters);
                queryStringParameters.AddRange(queryParametersBuilder.GetQueryParameters(command.QueryParameters));
            }

            queryStringParameters.AddRange(this.GetAdditionalParameters(command.AdditionalParameters));
            queryStringParameters.ForEach(x => { requestUri = QueryHelpers.AddQueryString(requestUri, x.Key, x.Value); });
            return(new Uri(requestUri, UriKind.Relative));
        }