Ошибки FormatException и ArgumentException - PullRequest
0 голосов
/ 05 ноября 2018

Я получаю эти ошибки в Visual Studio в приложении ASP.NET Core 2.1 при попытке изменить идентификатор со строки на long. Кто-нибудь еще сталкивался с этими ошибками?

Произошло необработанное исключение при обработке запроса. FormatException: входная строка была в неправильном формате. System.Number.StringToNumber (ReadOnlySpan str, NumberStyles параметры, номер NumberBuffer, информация NumberFormatInfo, bool parseDecimal) ArgumentException: 81d1aa6c-b70a-4d64-a62a-e177d79b944e недопустимое значение для Int64. Имя параметра: значение System.ComponentModel.BaseNumberConverter.ConvertFrom (ITypeDescriptorContext контекст, КультураИнфо культура, ценность объекта)

1 Ответ

0 голосов
/ 07 ноября 2018

Чтобы изменить первичный ключ удостоверения с string на long, выполните следующие действия:

  • Добавить ApplicationUser.cs

    public class ApplicationUser:IdentityUser<long>
    {
    }
    
  • Изменить ApplicationDbContext

    public class ApplicationDbContext : IdentityDbContext<ApplicationUser, IdentityRole<long>, long>
    {
        public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options)
            : base(options)
        {
        }
    }
    
  • Изменить Startup.cs

            services.AddDefaultIdentity<ApplicationUser>()
                .AddEntityFrameworkStores<ApplicationDbContext>();
    
  • Изменить _LoginPartial.cshtml с IdentityUser на ApplicationUser

               @using Microsoft.AspNetCore.Identity
    
    @inject SignInManager<ApplicationUser> SignInManager
    @inject UserManager<ApplicationUser> UserManager
    
    @if (SignInManager.IsSignedIn(User))
    {
        <form asp-area="Identity" asp-page="/Account/Logout" asp-route-returnUrl="@Url.Action("Index", "Home", new { area = "" })" method="post" id="logoutForm" class="navbar-right">
            <ul class="nav navbar-nav navbar-right">
                <li>
                    <a asp-area="Identity" asp-page="/Account/Manage/Index" title="Manage">Hello @UserManager.GetUserName(User)!</a>
                </li>
                <li>
                    <button type="submit" class="btn btn-link navbar-btn navbar-link">Logout</button>
                </li>
            </ul>
        </form>
    }
    else
    {
        <ul class="nav navbar-nav navbar-right">
            <li><a asp-area="Identity" asp-page="/Account/Register">Register</a></li>
            <li><a asp-area="Identity" asp-page="/Account/Login">Login</a></li>
        </ul>
    }
    
...