دلیل خطای No Service for type 'UserManager' has been registered
برای Customize کردن جداول Identity در Asp.Net Core 7 من ابتدا یک کلاس برای نقش و یک کلاس برای یوزر ایجاد کردم
using System;
using Microsoft.AspNetCore.Identity;
namespace MyWeb.Models
{
public class ApplicationRole : IdentityRole
{
public string Description { get; set; }
}
}
using System;
using Microsoft.AspNetCore.Identity;
namespace MyWeb.Models
{
public class ApplicationUser : IdentityUser
{
public string CustomField { get; set; }
}
}
و سپس آن را در کلاس dbContext به شکل زیر تعریف کردم
public class ApplicationDbContext : IdentityDbContext<ApplicationUser, ApplicationRole, string>
{
public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options)
: base(options)
{
}
protected override void OnModelCreating(ModelBuilder builder)
{
base.OnModelCreating(builder);
}
}
و بعد از آن در Program نیز آن را به Identity اضافه کردم
//program class
builder.Services.AddDbContext<ApplicationDbContext>(options =>
options.UseSqlServer(connectionString));
builder.Services.AddDatabaseDeveloperPageExceptionFilter();
builder.Services.AddIdentity<ApplicationUser, ApplicationRole>().AddEntityFrameworkStores<ApplicationDbContext>().AddDefaultTokenProviders();
...
app.UseRouting();
app.UseAuthorization();
app.MapRazorPages();
app.Run();
رشته اتصال رو هم در appsettings.json مطابق کد زیر تنظیم کردم
{
"ConnectionStrings": {
"DefaultConnection": "Server=.;Database=MyWebDB;Trusted_Connection=True;MultipleActiveResultSets=true;TrustServerCertificate=True"
},
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
},
"AllowedHosts": "*"
}
حال با اجرای سایت خطای زیر در مرورگر نمایش داده می شود.

پاسخ هوش مصنوعی
خطای "No service for type 'UserManager' has been registered" ممکن است به دلایل زیر باشد:
عدم پیکربندی صحیح Identity: اطمینان حاصل کنید که Identity در برنامه شما به درستی پیکربندی شده است. باید اطمینان حاصل کنید که در کد زیر،
ApplicationDbContext،ApplicationUserوApplicationRoleبه درستی تعریف شده اند:builder.Services.AddIdentity() .AddEntityFrameworkStores () .AddDefaultTokenProviders(); عدم ذخیره سازی در DbContext: مطمین شوید که
ApplicationDbContextبه طور صحیح درConfigureServicesثبت شده باشد و از آن استفاده شده باشد. باید اطمینان حاصل کنید که کانکشن استرینگ شما درappsettings.jsonصحیح است وDbContextبه درستی پیکربندی شده است.استفاده از نسخه های ناهماهنگ: بررسی کنید که آیا شما از نسخه های سازگار تمامی بسته های NuGet در پروژه خود استفاده می کنید.
نیاز به
UserManager: اگر شما به طور خاص ازUserManagerدر کد خود استفاده می کنید، اطمینان حاصل کنید که آن را به عنوان یک سرویس تنظیم کرده اید. مثلاً:public class SomeService { private readonly UserManager_userManager; public SomeService(UserManager userManager) { _userManager = userManager; } }
با بررسی موارد بالا، باید بتوانید مشکل خود را شناسایی و برطرف کنید. اگر هنوز با مشکل مواجه هستید، می توانید کدهای بیشتری از پروژه خود را به اشتراک بگذارید تا بهتر بتوانیم کمک کنیم.
توی کلاس Program.cs باید از میان افزار UseAuthentication هم استفاده کنید.
app.UseAuthentication();
app.UseAuthorization();
ممنون.
من این رو به برنامه اضافه و تست کردم اما باز هم همون خطا رو میده
پروژه شما رو دانلود کردم و تست کردم. در پوشه Shared یک پارشیال ویو به نام LoginPartial.cshtml وجود داره که سه خط کد زیر داخل اون هست.
@using Microsoft.AspNetCore.Identity
@inject SignInManager<IdentityUser> SignInManager
@inject UserManager<IdentityUser> UserManager
اشکال از این 3 خط کد هست. کلا بهتره محتویات این پارشیال ویو (که فکر کنم به طور پیش فرض وجود داشته در پروژه شما) رو پاک کنید.
ممنون آقای بحرانی فرد من این کار را انجام دادم و مشکل حل اما Login و Register در بالای صفحه حذف شد که من مجدد اون قسمتی که حذف کردم برگردوندم و به شکل زیر تغییر دادم
@using Microsoft.AspNetCore.Identity
@using MyWebApp.Models
@inject SignInManager<ApplicationUser> SignInManager
@inject UserManager<ApplicationUser> UserManager
با این کار هم مشکل حل شد ام باز هم صفحه Login و Register کار نمیکنه
آیا راهی هست که این دو صفحه هم کار کنه یا باید مجدد این دو صفحه رو جدید بسازم؟
مشکل باز نشدن صفحه Login و Register با افزودن Default UI به AddIdentity مطابق کد زیر طور کامل حل شد.
builder.Services.AddIdentity<ApplicationUser, ApplicationRole>().AddEntityFrameworkStores<ApplicationDbContext>()
.AddDefaultTokenProviders().AddDefaultUI();
- PostgreSql چیست ؟ چه کاربردهایی دارد ؟
- دسترسی به پکیج های nuget در زمان قطع نت بین الملل
- نمایش آخرین ردیف دیتاگیرید موقع لود در wpf
- مشکل اینترنت جهانی و عدم دسترسی به cdnjs.cloudflare.com
- مشکل در نصب sql server 2022
- جلوگیری از اد شدن خودکار در گروه و کانال تلگرام
- کم کردن حجم فیلم توسط کد در Asp net core
- چه کسانی استوری تلگرام را می بینند ؟
- برای کسب و کار تلگرام پرمیوم بهتره یا واتس اپ بیزینس ؟
- جلوگیری از انتشار غیرمجاز مطالب در کانال های تلگرامی
- کار با CkEditor با قابلیت آپلود عکس
- خطا در ایجاد migration در Asp.net core
- تفاوت های Asp.net core و Asp.net mvc چیه؟
- دلیل اسپم شدن ایمیل های ارسالی از سرور
- نحوه لایه بندی پروژه Core و اضافه کردن به IIS
- ارسال ایمیل در Asp.net core
- آیا میشه در mvc core از کامپونت استفاده کرد
- آپلود فایل در Asp.net core چگونه است؟
- حذف کامل یک رکورد در جدول ریلیشن شده
- اشکال در آپلود فایل ویدیو در mvc core 2