Ich kann Details des angemeldeten Benutzers von Controller, der IHttpContextAccessor httpContextAccessor injiziert, abrufen. Aber wenn ich es in meinem Service versuche, funktioniert es nicht. Ich bekomme diese FehlerAbrufen von Benutzerdetails von Identität im Dienst
{System.Exception: Cannot access a disposed object. A common cause of this error is disposing a context that was resolved from dependency injection and then later trying to use the same context instance elsewhere in your application. This may occur if you a...
Was ich getan habe, ist eine IUserService Schnittstelle erstellen. Dann fügte GetUser Methode dort mit seiner Umsetzung als:
public class UserService : IUserService
{
private readonly IHttpContextAccessor _context;
private readonly UserManager<User> _userManager;
public UserService(IHttpContextAccessor context, UserManager<User> userManager)
{
_context = context;
_userManager = userManager;
}
public async Task<User> GetUser()
{
return await _userManager.FindByNameAsync(_context.HttpContext.User.Identity.Name);
}
}
ich services.AddSingleton<IUserService, UserService>();
in meinem IServiceCollection auch hinzugefügt haben.
Es scheint, dass Sie die GetUser-Methode aufrufen, nachdem die Antwort zurückgeschickt wurde, in der pro Anforderung bereits Dienste entsorgt wurden. Wo greifen Sie auf die GetUser-Methode zu? – Win
Ich habe NeaService-Klasse, wo ich IUserService injiziere und die Details des angemeldeten Benutzers, der die Daten aufgezeichnet hat, erhalten und in meiner Datenbank speichern. – user3127109
Und ist die 'NeaService' Klasse auch Singleton? – DavidG