使用DI使用Castle Windsor注入ASP.NET标识

时间:2017-08-28 07:56:57

标签: c# asp.net-mvc dependency-injection castle-windsor asp.net-identity-2

我想要做的是阻止ASP.NET中的多次登录 我遵循了这篇文章:Prevent Multiple Login in ASP.NET

之后我按照本文:Changing PK data type将主键的数据类型从字符串(默认)更改为long。但我还是无法阻止多次登录。

我发现它无法正常工作的原因是因为我无法获得UserManager的实例

app.CreatePerOwinContext(() => DependencyResolver.Current.GetService<UserManager>());

上面的代码不起作用。我收到错误

  

对象引用未设置为对象的实例。

之后我发现了这篇文章:AspNet Identity and IoC Container Registration并尝试理解代码,但它使用了统一。但是上面有一篇关于使用Castle Windsor的文章的链接:Castle Windsor我不知道这是从哪里来的:

var container = DIContainer.GetConfiguredContainer();

更新
现在我意识到我无法获取对象实例的原因是因为我不能像其他.cs文件一样在StartUp.cs中注入UserManager。 例如:

private readonly UserManager _userManager;

public StartUp(UserManager userManager)
{
      _userManager = userManager;
}

上面的代码给了我这个错误:

  

没有为此对象定义无参数构造函数

请帮帮我!!!它困扰了我几个星期

1 个答案:

答案 0 :(得分:0)

此问题已修复。请转到下面的链接查看它是如何修复的。

Solution

希望这可以帮助那些试图阻止多次登录的人 如果您有任何问题,请随时问我,我会尽力帮助您。