Как Вы тестируете HTTPS со сценарием/сервером направляющих?

Полагаю, вы могли бы использовать метод double.ToString (string). См .: https://docs.microsoft.com/en-us/dotnet/api/system.double.tostring?view=netframework-4.7.2#System_Double_ToString_System_String_

Параметр может быть либо строкой пользовательского числового формата ( https://docs.microsoft.com/en-us/dotnet/standard/base-types/custom-numeric-format-strings ), либо строк стандартного числового формата ([ 1110] https://docs.microsoft.com/en-us/dotnet/standard/base-types/standard-numeric-format-strings?view=netframework-4.7.2#NFormatString ).

Спецификатор точности спецификатора формата «N» должен находиться в диапазоне от 0 до 99 (N0 ~ N99), в противном случае метод ToString будет возвращать строку, переданную в качестве параметра. Вы можете сделать double.ToString("N99"), который будет возвращать строку в числовой форме с самой высокой точностью. Проблема в том, что если вы сделаете 0.000078125.ToString("N99"), то на выходе будет много концевых 0, например: 0.0000781250000000000....

Чтобы преодолеть это, вы можете использовать метод string.TrimEnd (char). 0.000078125.ToString ("N99"). TrimEnd ('0') обрежет конечные нули, поэтому на выходе может быть 0,000078125.

В данном примере кода это может быть применено как:

//Avoid boxing - specify types whenever possible, or use generic
double[] oo = {0.000278121, 0.000078125};
string[] ss = oo.Select(x => x.ToString("N99").TrimEnd('0')).ToArray();
Console.WriteLine(string.Join("|",ss)); // 0.000278121|0.000078125

Редактировать: я должен был прочитать вопрос более внимательно, изменение типа oo не подойдет в вашем случае. Однако общая идея та же самая; Приведите объект к удвоению, используйте метод ToString (string) с соответствующей точностью, затем обрежьте конечные нули.

Вы можете проверить, что тип объекта является двойным, выполнив obj is double, и, кроме того, приведите его к удвоению с помощью obj is double dbl (сопоставление с образцом).

Редактировать 2:

public static IEnumerable AllToString(IEnumerable objArray)
{
    foreach (object obj in objArray)
    {
        switch (obj)
        {
            case double dbl:
                yield return dbl.ToString("N99").TrimEnd('0');
                break;
            case bool b:
                yield return b.ToString();
                break;
            case int i:
                yield return i.ToString();
                break;
            case short s:
                yield return s.ToString();
                break;
            case string str:
                yield return str;
                break;
            case float flt:
                yield return flt.ToString("N99").TrimEnd('0');
                break;
            case decimal dcm:
                yield return dcm.ToString("N99").TrimEnd('0');
                break;
            case byte bt:
                yield return bt.ToString();
                break;
            case char ch:
                yield return ch.ToString();
                break;
            case uint ui:
                yield return ui.ToString();
                break;
            case ushort us:
                yield return us.ToString();
                break;
            case sbyte sb:
                yield return sb.ToString();
                break;
            case long ln:
                yield return ln.ToString();
                break;
            case ulong uln:
                yield return uln.ToString();
                break;
            case null:
                yield return null; //new string()?
                break;
            case DateTime dt:
                yield return dt.ToString();
                break;
            case TimeSpan ts:
                yield return ts.ToString();
                break;
            default: //Fallback
                yield return obj.ToString();
                break;
        }
    }
}

Передать массив объектов в метод, а затем вызвать .ToArray () или .ToList (), если требуется. Это преобразует каждый элемент в массиве / списке объектов в коллекцию строк.

9
задан Teflon Ted 16 January 2009 в 18:08
поделиться

1 ответ

HTTPS - что-то, что обрабатывается вне Инфраструктуры Rails. Поэтому Вы не можете протестировать его непосредственно. Функциональность, которую обеспечивает Ваше приложение направляющих, должна быть точно тем же на HTTPS, как это находится на незашифрованном HTTP.

сценарий/сервер использует Полукровку для обслуживания запросов. Полукровка не поддерживает SSL / HTTPS непосредственно.

Если Вы действительно хотите протестировать функциональность HTTPS, необходимо установить Apache (или другой веб-сервер) с поддержкой SSL/HTTPS (использование mod_ssl), и настройте его для запуска приложения направляющих (использование mod_rails или mod_proxy).

14
ответ дан 4 December 2019 в 14:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: