Httpcontext.getowincontext() не содержит определения для
Привет Команда
У меня есть эта ошибка " HttpContext.GetOwinContext() не содержит определения для GetOwinContext ()'. Это исходит из моего метода при возврате _userManager ?? HttpContext... Как мне решить эту проблему?
Что я уже пробовал:
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Data.Entity; using System.Security.Claims; using System.Threading.Tasks; using Microsoft.AspNet.Identity; using Microsoft.AspNet.Identity.EntityFramework; using Microsoft.AspNet.Identity.Owin; using Microsoft.Owin; using Microsoft.Owin.Security; using System.Net.Mail; using System.Net; using System.Web.Configuration; using eNtsaTrainingRegistration.Models; namespace eNtsaTrainingRegistration { public class EmailService : IIdentityMessageService { public Task SendAsync(IdentityMessage message) { var mailMessage = new MailMessage(); mailMessage.To.Add(new MailAddress(message.Destination)); mailMessage.From = new MailAddress("Gcobani Mkontwana <ggcobani@gmail.com>"); mailMessage.Subject = message.Subject; mailMessage.IsBodyHtml = true; mailMessage.Body = message.Body; using (var smtp = new SmtpClient()) { var credential = new NetworkCredential { UserName = WebConfigurationManager.AppSettings["UserName"], Password = Helper_b.Decrypt(WebConfigurationManager.AppSettings["UserPassword"]) }; smtp.Credentials = credential; smtp.Host = WebConfigurationManager.AppSettings["SMTPName"]; smtp.Port = int.Parse(WebConfigurationManager.AppSettings["SMTPPort"]); smtp.EnableSsl = true; smtp.Send(mailMessage); } return Task.FromResult(0); } } public class SmsService : IIdentityMessageService { public Task SendAsync(IdentityMessage message) { return Task.FromResult(0); } } // add another method here. public class ApplicationUserManager : UserManager<ApplicationUser> { public ApplicationUserManager(IUserStore<ApplicationUser> store) : base(store) { } public static ApplicationUserManager Create(IdentityFactoryOptions<ApplicationUserManager> options, IOwinContext context) { var manager = new ApplicationUserManager(new UserStore<ApplicationUser>(context.Get<ApplicationDbContext>())); // Configure validation logic for usernames manager.UserValidator = new UserValidator<ApplicationUser>(manager) { AllowOnlyAlphanumericUserNames = false, RequireUniqueEmail = true }; // Configure validation logic for passwords manager.PasswordValidator = new PasswordValidator { RequiredLength = 6, RequireNonLetterOrDigit = true, RequireDigit = true, RequireLowercase = true, RequireUppercase = true, }; // Configure user lockout defaults manager.UserLockoutEnabledByDefault = true; manager.DefaultAccountLockoutTimeSpan = TimeSpan.FromMinutes(5); manager.MaxFailedAccessAttemptsBeforeLockout = 5; // Register two factor authentication providers. This application uses Phone and Emails as a step of receiving a code for verifying the user // You can write your own provider and plug it in here. manager.RegisterTwoFactorProvider("Phone Code", new PhoneNumberTokenProvider<ApplicationUser> { MessageFormat = "Your security code is {0}" }); manager.RegisterTwoFactorProvider("Email Code", new EmailTokenProvider<ApplicationUser> { Subject = "Security Code", BodyFormat = "Your security code is {0}" }); manager.EmailService = new EmailService(); manager.SmsService = new SmsService(); var dataProtectionProvider = options.DataProtectionProvider; if (dataProtectionProvider != null) { manager.UserTokenProvider = new DataProtectorTokenProvider<ApplicationUser>(dataProtectionProvider.Create("ASP.NET Identity")); } return manager; } } // SignInManager class. public class ApplicationSignInManager : SignInManager<ApplicationUser, string> { public ApplicationSignInManager(ApplicationUserManager userManager, IAuthenticationManager authenticationManager) : base(userManager, authenticationManager) { } public override Task<ClaimsIdentity> CreateUserIdentityAsync(ApplicationUser user) { return user.GenerateUserIdentityAsync((ApplicationUserManager)UserManager); } public static ApplicationSignInManager Create(IdentityFactoryOptions<ApplicationSignInManager> options, IOwinContext context) { return new ApplicationSignInManager(context.GetUserManager<ApplicationUserManager>(), context.Authentication); } } public class ApplicationRoleManager:RoleManager<IdentityRole> { public ApplicationRoleManager(IRoleStore<IdentityRole, string> roleStore) :base(roleStore) { } public static ApplicationRoleManager Create(IdentityFactoryOptions<ApplicationRoleManager> options, IOwinContext context) { var appRoleManager = new ApplicationRoleManager(new RoleStore<IdentityRole>(context.Get<ApplicationDbContext>())); return appRoleManager; } } }
public ApplicationRoleManager AppRoleManager { get { return _roleManager ?? Request.GetOwinContext().GetUserManager<ApplicationRoleManager>(); } private set { _roleManager = value; } }
using System; using System.Linq; using System.Threading.Tasks; using System.Web; using System.Web.Mvc; using Microsoft.AspNet.Identity; using Microsoft.AspNet.Identity.Owin; using Microsoft.Owin.Security; using BookerDataSync.Models; namespace BookerDataSync.Controllers { [Authorize] public class ManageController : AppBaseController { private ApplicationSignInManager _signInManager; private ApplicationUserManager _userManager; private ApplicationRoleManager _roleManager; public ManageController() { } public ManageController(ApplicationUserManager userManager, ApplicationSignInManager signInManager, ApplicationRoleManager roleManager) { UserManager = userManager; SignInManager = signInManager; AppRoleManager = roleManager; } public ApplicationSignInManager SignInManager { get { return _signInManager ?? HttpContext.GetOwinContext().Get<ApplicationSignInManager>(); } private set { _signInManager = value; } } public ApplicationUserManager UserManager { get { return _userManager ?? HttpContext.GetOwinContext().GetUserManager<ApplicationUserManager>();// The error is coming from this each time and need some help to fix this please. } private set { _userManager = value; } } public ApplicationRoleManager AppRoleManager { get { return _roleManager ?? Request.GetOwinContext().GetUserManager<ApplicationRoleManager>(); } private set { _roleManager = value; } }
Richard MacCutchan
Я исправил форматирование, и теперь комментарий виден.
gcogco10
public ApplicationSignInManager SignInManager{... вернуть _signInManager ?? HttpContext.GetOwinContext().Get...}