- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在使用 MVC 5 EF、Identity、Unity 清理旧应用程序我无法弄清楚如何为 AccountController 注册 DI。在里面在下面的例子中我改变了来自以下的空构造函数
public AccountController()
{ }
为此
public AccountController(IDateTimeService dateTimeService, ILeagueLogic leagueLogic)
{
_dateTimeService = dateTimeService;
_leagueLogic = leagueLogic;
}
所以在完整的 Controller 中我有以下
public class AccountController : Controller
{
private ApplicationUserManager _userManager;
private IDateTimeService _dateTimeService;
private ILeagueLogic _leagueLogic;
[InjectionConstructor] <-- Nailed it
public AccountController(IDateTimeService dateTimeService, ILeagueLogic leagueLogic)
{
_dateTimeService = dateTimeService;
_leagueLogic = leagueLogic;
}
public AccountController(ApplicationUserManager userManager, ApplicationSignInManager signInManager)
{
UserManager = userManager;
SignInManager = signInManager;
}
public ApplicationUserManager UserManager
{
get
{
return _userManager ?? HttpContext.GetOwinContext().GetUserManager<ApplicationUserManager>();
}
private set
{
_userManager = value;
}
}
private ApplicationSignInManager _signInManager;
public ApplicationSignInManager SignInManager
{
get
{
return _signInManager ?? HttpContext.GetOwinContext().Get<ApplicationSignInManager>();
}
private set { _signInManager = value; }
}
//
// GET: /Account/Login
[AllowAnonymous]
public ActionResult Login(string returnUrl)
{
ViewBag.ReturnUrl = returnUrl;
return View();
}
在 UnityConfig 文件中我有以下内容
public static void RegisterTypes(IUnityContainer container)
{
container.RegisterType<IDateTimeService, DateTimeService>();
container.RegisterType<ILeagueLogic, LeagueLogic>();
container.RegisterType<IUserStore<ApplicationUser>, UserStore<ApplicationUser>>();
container.RegisterType<UserManager<ApplicationUser>>();
container.RegisterType<DbContext, ApplicationDbContext>();
container.RegisterType<ApplicationUserManager>();
// container.RegisterType<AccountController>(new InjectionConstructor()); <-- Removed this line
}
但是我明白了
The type MyProgram.Controllers.AccountController does not have a constructor that takes the parameters ().
有点难过.,.我相信我需要以某种方式注册 Controller ,但不确定......具体如何
最佳答案
最后一行
container.RegisterType<AccountController>(new InjectionConstructor());
explicitly tells Unity创建一个 AccountController
使用 new AccountController()
的实例构造函数
Based on the docs类型注册应该是这样的:
container.RegisterType<AccountController>(
new InjectionConstructor(
container.Resolve< IDateTimeService>(),
container.Resolve< IDateTimeService >()));
UPD: 如果您的 AccountController
中只有一个构造函数类,您可以尝试删除 container.RegisterType<AccountController>(new InjectionConstructor());
线完全。 Unity 应该能够在没有提示的情况下构建实例。
UPD2:
如果您有多个构造函数,但 Unity 仅使用一个构造实例(例如,第二个可能用于单元测试项目),您可以使用 [InjectionConstructor]
装饰新的构造函数属性
[InjectionConstructor]
public AccountController(IDateTimeService dateTimeService, ILeagueLogic leagueLogic)
{
_dateTimeService = dateTimeService;
_leagueLogic = leagueLogic;
}
关于c# - 在 AccountController 中使用依赖注入(inject)的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47761537/
我是 MVC 和 C# 的新手,一直卡在这个错误上。我不知道如何纠正它。任何帮助,将不胜感激。 我正在尝试将客户存储库放入 AccountController 中,以便在创建用户时可以将其与注册用户
我在 Asp .Net Core 2.1 中创建了 - mvc 个人用户帐户并添加了脚手架身份。 我需要将路由 Identity/Account/Register 覆盖到 Account/Regist
我正在 中创建一个 MVC 项目VS2017 并在 VS2015 ,当你创建一个 MVC 模板化的 ASP.NET Web 应用程序时,它会自动为你构建一个帐户 Controller ,它添加了注册和
关闭。这个问题需要details or clarity .它目前不接受答案。 想改进这个问题吗? 通过 editing this post 添加细节并澄清问题. 关闭 6 年前。 Improve t
那是我的AccountController : [Authorize] public class AccountController : Controller { private UserMa
帐户 Controller 未正确注册 我有一个 ASP.NET MVC 应用程序,其中包含使用身份的个人用户帐户。在我的帐户 Controller 中,我有一个要注入(inject)的 UserMa
因此,我们终于成功地将 Spring 框架从版本 3.2 更新到 4.2.25。经过一些痛苦的过程后,我现在陷入了这个异常: Error create bean with name 'accountC
我在 asp.net 论坛上问过这个问题,但似乎没有人知道我在说什么。我不知道为什么会这样,但我想我会在这里问一下,看看是否有人有一些见识。 早在 MVC2 发布时,它包含一个示例 AccountCo
我正在使用 MVC 5 EF、Identity、Unity 清理旧应用程序我无法弄清楚如何为 AccountController 注册 DI。在里面在下面的例子中我改变了来自以下的空构造函数
我正在尝试在 aspnetuser 中设置列的值来自不同 Controller 的表(不是 accountcontroller )。我一直在尝试访问UserManager但我不知道我们该怎么做。
创建具有单独身份验证的新 .NET Core 2.1 Web 项目时,该项目将与 AccountController 和 ManageController 一起创建。 命令是: dotnet new
此问题与您在 Visual Studio Community 2015 RC 中打开 ASP.NET MVC 应用程序时获得的 Visual Studio 生成的代码有关。 在此生成的代码中,Acco
我一直在观看使用 Spring 进行 Web 开发的教程视频。 Here是完整的源代码。 以下是我向 发送 GET 请求时遇到的错误 localhost:8080/basic-web-app/rest
这够好吗?或者我还必须处理 UserStore 吗?如果我确实需要任何建议,我们将不胜感激。我是 ASP.NET Identity 的新手。 using (var applicationDbConte
我正在开发一个移动应用程序(在 Android 中),它必须连接到 Azure 数据库(该数据库也被该应用程序的 Web 版本使用)。我使用 HttpURLConnection 成功地将 POST/P
我有以下通用 webApi2 AccountController:- private const string LocalLoginProvider = "Local"; privat
我有一个带有登录操作的 AccountController。 我们像这样在我们的应用程序服务中登录用户: _signInManager.AuthenticationManager.SignIn(new
我正在使用 ASP.NET MVC 2 创建一个网站,我正在考虑使用默认的 AccountController 和 View 来照顾用户。 唯一的问题是,我使用的是 Postgres 数据库。 有没有
我创建了一个新的 ASP.NET MVC 5 项目,其中包含个人用户身份验证。然后我继续将 Unity IoC 安装为一个包,并通过在 UnityConfig.cs 中执行以下操作对其进行配置: pu
ASP.NET MVC 1.0(最终版)项目模板具有内置的基本成员资格,但我需要通过两种方式对其进行扩展: 电子邮件确认验证新帐户。 附加字段 在注册 View 上,例如“家庭街道地址”和“部门编号”
我是一名优秀的程序员,十分优秀!