Asp.net mvc Unity Framework会从MVC 5中的上下文中删除cookie吗
我正在创建一个应用程序,该应用程序具有用于依赖项注入的unity框架,因此我的帐户控制器遵循并包含登录操作Asp.net mvc Unity Framework会从MVC 5中的上下文中删除cookie吗,asp.net-mvc,cookies,asp.net-mvc-5,Asp.net Mvc,Cookies,Asp.net Mvc 5,我正在创建一个应用程序,该应用程序具有用于依赖项注入的unity框架,因此我的帐户控制器遵循并包含登录操作 public class AccountController : Controller { private readonly IUserService userService; public AccountController(IUserService userService) { this.userService = userService;
public class AccountController : Controller
{
private readonly IUserService userService;
public AccountController(IUserService userService)
{
this.userService = userService;
}
public ActionResult Login()
{
return View();
}
[HttpPost]
[AllowAnonymous]
//[ValidateAntiForgeryToken]
public ActionResult Login(LoginViewModel model)
{
if (ModelState.IsValid)
{
string message = "";
var user = userService.UserExists(model, out message);
if (user != null)
{
CustomPrincipalSerializeModel serializeModel = new CustomPrincipalSerializeModel();
serializeModel.UserId = Convert.ToInt32(user.Id);
serializeModel.EmailId = user.EmailId;
serializeModel.FirstName = user.FirstName;
serializeModel.LastName = user.LastName;
serializeModel.role = user.Role;
string userData = JsonConvert.SerializeObject(serializeModel,Formatting.Indented,
new JsonSerializerSettings
{
PreserveReferencesHandling = PreserveReferencesHandling.Objects
});
FormsAuthenticationTicket authTicket = new FormsAuthenticationTicket(
1,
user.EmailId,
DateTime.Now,
model.RememberMe ? DateTime.Now.AddDays(3) : DateTime.Now.AddHours(3),
model.RememberMe ? true : false,
userData);
string encTicket = FormsAuthentication.Encrypt(authTicket);
HttpCookie faCookie = new HttpCookie(FormsAuthentication.FormsCookieName, encTicket);
faCookie.Expires = model.RememberMe ? DateTime.Now.AddDays(3) : DateTime.Now.AddHours(3);
Response.Cookies.Add(faCookie);
return RedirectToAction("Index", "Home");
}
}
else
{
ModelState.AddModelError("", "Incorrect username and/or password");
}
return View(model);
}
}
.在登录操作中,我将执行以下操作
1) 检查用户是否存在(如果存在),然后添加FormsAuthenticationCookie。
但当我使用IUserService(DI接口)时,当重定向到另一个操作时,cookie被删除。
2) 但若我从控制器中删除DI,那个么Cookie将被持久化
怎么了?我从几天内就找到了答案。
请给我解决方案,我想要DI和Cookie
提前谢谢 您可能想检查IUserService是如何注册的?i、 每一个请求?每个线程?每个容器等。尝试更改设置并从那里开始。还有,cookie持久化的代码是什么?如果我删除“var user=userService.UserExists(model,out message);”这个语句,那么cookie就会持久化,即使我没有从公共AccountController(IUserService userService)的控制器构造函数中删除IUserService,也会持久化{this.userService=userService;}