Хашиды не работают в.NET при декодировании

Я использую Hashids, чтобы скрыть идентификаторы базы данных в URL. Ниже приведена моя инициализация хашидов:

public static Security.Hashids HashOps = new Security.Hashids("Sl212", 5);

Security это пространство имен моего проекта, внутри которого я скопировал файл Hashids.cs. Кодировка работает правильно, но декодирование выбрасывает IndexOutOfRangeException исключение. Вот как я декодирую:

int fileID=HashOps.Decode(FileID)[0];

Я попробовал это на многих солях и без соли, но это бросало то же самое исключение снова и снова. Я использую оригинальный код из файла. Кроме пространства имен я ничего не изменил.

Подскажите пожалуйста что делать? После 12 часов попыток мой разум застрял в тупике.

ОБНОВИТЬ

Тестовый код, который я запускаю в консольном приложении, также вызывает исключение:

Hashids HashOps = new Hashids();
string hash = HashOps.Encode(212);
Console.WriteLine("Encoded: " + hash);
Console.WriteLine("Decoded: " + HashOps.Decode(hash)[0]);

1 ответ

Решение

Наконец, с помощью @Heinzi я смог обнаружить, что на самом деле происходит. Проблема была с системой определения URL моего веб-приложения. Который обнаруживает URL и загружает контент в DIV. Эта система делала полный URL нижним регистром. Следовательно, изменение хэша, содержащего заглавную букву. Я просто использовал реальный URL вместо пониженного при определении идентификаторов.

Другие вопросы по тегам