Числа, начиная с 0, интерпретируются как восьмеричные, а не десятичные. Это не литералы C #, поэтому библиотека может интерпретировать ее так или иначе.
Простым способом тестирования было бы построить IP-окончание в «.010», проанализировать его и вы увидите, что он был разобран как ip, заканчивающийся на .8.
Возможным быстрым и грязным решением было бы найти регулярное выражение /\.0*/
и заменить его на «.»
. Вы можете найти дополнительную информацию о записи в Википедии для Dot-decimal -notation:
Популярная реализация IP-сетей, происходящая из 4.2BSD, содержит функцию inet_aton () для преобразования IP-адресов в представление символьных строк во внутреннее двоичное хранилище. В дополнение к базовому формату с четырьмя десятичными знаками и полным 32-разрядным адресам он также поддерживает промежуточные синтаксисы октетов.24 бит (например, 10.1234567, для адресов класса А) и октетов.octet.16bits (например, 172.16.12345, для адресов класса B ). Он также позволял записывать числа в шестнадцатеричном и восьмеричном значениях, префикс их 0x и 0 соответственно. Эти функции продолжают поддерживаться программным обеспечением до сегодняшнего дня, хотя они рассматриваются как нестандартные. Но это также означает, что адреса, где компонент IP-адреса записывается с ведущей нулевой цифрой, могут быть интерпретированы по-разному разными программами: некоторые будут игнорировать начальный ноль, некоторые будут интерпретировать число как восьмеричное.
blockquote>
значение срока действия, неопределенное в дескрипторе токена.
var tokenDescriptor = new SecurityTokenDescriptor
{
Issuer = _config.GetValidIssuer(),
Audience = _config.GetValidAudience(),
SigningCredentials = new SigningCredentials(_config.GetSymmetricSecurityKey(), SecurityAlgorithms.HmacSha256),
Subject = new ClaimsIdentity(new[]
{
new Claim(ClaimTypes.Name, user.UserName),
new Claim(ClaimTypes.NameIdentifier, user.Id.ToString())
}),
// expiration time here...
Expiration = _config.GetExpiration() // etc
};