Строка ввода не была в правильной ошибке формата при использовании ключей 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 он просто выходит из системы, потому что не может распознать вас как пользователя.