Строка ввода не была в правильной ошибке формата при использовании ключей int

Сначала я хочу заверить вас, что я уже прочитал много сообщений с похожим заголовком на SO.

Я создал проект ASP.NET MVC и изменил ключи таблиц шаблонов на int после этой статьи

http://www.asp.net/identity/overview/extensibility/change-primary-key-for-users-in-aspnet-identity

Но я получаю ошибку выполнения в этой строке StartUp.Auth.cs

getUserIdCallback: (id) => (id.GetUserId<int>()))

Ошибка = System.FormatException: строка ввода не была в правильном формате. Любая помощь приветствуется.

Ответ 1

Я знаю, это поздний ответ. Но для людей, которые могут столкнуться с этим в будущем: очистите кеш или переключитесь на другой браузер.

Хотя вы изменили pk от string до int в коде и обновили связанные таблицы Identity, cookie все еще был тем, с которым вы вошли в систему со строками pks.

Ответ 2

Чтобы избавиться от этой ошибки, вам необходимо очистить файлы cookie для вашего сайта.

Chrome: F12 → Приложение → Хранение → Файлы cookie → ваш сайт → Очистить

Ответ 3

Я действительно не хотел менять вкус моего браузера. Итак, в моем случае, из Chrome DevTools (F12) > Приложение > Очистить хранилище > Очистить данные сайта зафиксировал его.

введите описание изображения здесь

Ответ 4

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

Я нашел решение проблемы с хранилищем GitHub: https://github.com/TypecastException/AspNet-Identity-2-With-Integer-Keys/issues/2#issuecomment-128280883

Использование следующего кода исправило мою проблему

getUserIdCallback: (id) => GrabUserId(id))

public static int GrabUserId(System.Security.Claims.ClaimsIdentity claim)
{
    if (!int.TryParse(claim.GetUserId(), out int id))
        return 0;
    else
        return id;
}

При возврате 0 он просто выходит из системы, потому что не может распознать вас как пользователя.