public Uri GenerateUrl(NameValueCollection parameters, string linkTarget = null)
        {
            if (String.IsNullOrWhiteSpace(linkTarget))
            {
                linkTarget = RequestParser.RequestTarget;
            }

            parameters = ParametersConverter.ServerToClientRequestParameters(parameters);

            return new Uri(String.Format("{0}?{1}", linkTarget, parameters.ToUriQueryString()));
        }
        public Uri GetUrlWithoutAuthentication(RequestType action, NameValueCollection parameters)
        {
            EnsureChannelParameter(parameters);

            var config = ConnectionSection.GetSection();

            return new Uri(String.Format(
                "{0}://{1}:{2}/{3}/{4}?{5}",
                config.Protocol,
                config.ServerAddress,
                config.Port,
                config.Context,
                action,
                parameters.ToUriQueryString()
            ));

        }
        public Uri GetUrlWithSimpleAuthentication(RequestType action, NameValueCollection parameters)
        {
            EnsureChannelParameter(parameters);

            var config = ConnectionSection.GetSection();

            parameters["timestamp"] = Clock.Now().ToString();
            parameters["username"] = config.Authentication.UserName;
            parameters["password"] = config.Authentication.Password.ToMD5();

            return new Uri(String.Format(
                "{0}://{1}:{2}/{3}/{4}?{5}",
                config.Protocol,
                config.ServerAddress,
                config.Port,
                config.Context,
                action,
                parameters.ToUriQueryString()
            ));
        }