دسته بندی ها
14:24 1403/02/23

دلیل خطای No Service for type 'UserManager' has been registered

مشخصات سوال کننده :
کاربر : Tarak4135     امتیاز کاربر : 56     رتبه کاربر : 17
دسته بندی : Asp.net Core

به این سوال امتیاز بدهید    0
تعداد بازدید این سوال : 940
هوش مصنوعی

پاسخ هوش مصنوعی

خطای "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;
            }
        }

با بررسی موارد بالا، باید بتوانید مشکل خود را شناسایی و برطرف کنید. اگر هنوز با مشکل مواجه هستید، می توانید کدهای بیشتری از پروژه خود را به اشتراک بگذارید تا بهتر بتوانیم کمک کنیم.

به این پاسخ امتیاز بدهید    0
امتیاز: - رتبه: -
پاسخ دهنده : hamid_b 14:49 1403/02/23

توی کلاس Program.cs باید از میان افزار UseAuthentication هم استفاده کنید.

app.UseAuthentication();
app.UseAuthorization();

 

ویرایش شده در یکشنبه 23 اردیبهشت 1403 ساعت 14:52:10
به این پاسخ امتیاز بدهید    0
امتیاز: 518 رتبه: 4
پاسخ دهنده : Tarak4135 01:16 1403/02/24

ممنون.

من این رو به برنامه اضافه و تست کردم اما باز هم همون خطا رو میده

به این پاسخ امتیاز بدهید    0
امتیاز: 56 رتبه: 17
پاسخ دهنده : saedbfd 13:53 1403/02/24

پروژه شما رو دانلود کردم و تست کردم. در پوشه Shared یک پارشیال ویو به نام LoginPartial.cshtml وجود داره که سه خط کد زیر داخل اون هست.

@using Microsoft.AspNetCore.Identity
@inject SignInManager<IdentityUser> SignInManager
@inject UserManager<IdentityUser> UserManager

اشکال از این 3 خط کد هست. کلا بهتره محتویات این پارشیال ویو (که فکر کنم به طور پیش فرض وجود داشته در پروژه شما) رو پاک کنید.

به این پاسخ امتیاز بدهید    1
امتیاز: 1664 رتبه: 1
پاسخ دهنده : Tarak4135 14:08 1403/02/25

ممنون آقای بحرانی فرد من این کار را انجام دادم و مشکل حل اما Login و Register در بالای صفحه حذف شد که من مجدد اون قسمتی که حذف کردم برگردوندم و به شکل زیر تغییر دادم

@using Microsoft.AspNetCore.Identity
@using MyWebApp.Models
@inject SignInManager<ApplicationUser> SignInManager
@inject UserManager<ApplicationUser> UserManager

با این کار هم مشکل حل شد ام باز هم صفحه  Login و Register کار نمیکنه

آیا راهی هست که این دو صفحه هم کار کنه یا باید مجدد این دو صفحه رو جدید بسازم؟

 

به این پاسخ امتیاز بدهید    0
امتیاز: 56 رتبه: 17
1 نظر
saedbfd : درود بر شما. من طبق خطایی که داشتید فقط اشکال رو پیدا کردم. برای فرم لاگین میتونید یک فرم خودتون اختصاصی بسازید.

امتیاز کاربر : 1664   رتبه کاربر : 1   تاریخ ثبت : 02:29 1403/02/26
پاسخ دهنده : Tarak4135 13:55 1403/02/26

 مشکل باز نشدن صفحه  Login و Register با افزودن Default UI به AddIdentity  مطابق کد زیر طور کامل حل شد.

builder.Services.AddIdentity<ApplicationUser, ApplicationRole>().AddEntityFrameworkStores<ApplicationDbContext>()
.AddDefaultTokenProviders().AddDefaultUI();

 

ویرایش شده در چهارشنبه 26 اردیبهشت 1403 ساعت 14:29:53
به این پاسخ امتیاز بدهید    2
امتیاز: 56 رتبه: 17
1 نظر
saedbfd : بسیار عالیو تشکر از ارسال پاسخ صحیح.

امتیاز کاربر : 1664   رتبه کاربر : 1   تاریخ ثبت : 02:30 1403/02/26
برای ارسال پاسخ لطفا وارد حساب کاربری خود شوید.   ورود