gpt4 book ai didi

asp.net-mvc - Visual Studio 2013 MVC 模板在与 Unity 一起使用时引发错误

转载 作者:行者123 更新时间:2023-12-04 17:36:22 26 4
gpt4 key购买 nike

我使用最新的 ASP.NET 和 Web Tools 2013 Preview Refresh (1.0.0-beta1) 在 Visual Studio 2013(预览版)中创建了一个新的 MVC5 应用程序。我注意到 IdentityConfig.cs 和现在是框架一部分的用户模型一起消失了。 IdentityStoreManager 是与 IdentityAuthenticationManager 一起在默认 AccountController 中引入的。

当我构建并运行标准项目时,一切正常!到目前为止一切顺利,是的!

然后我从 Nuget 安装 Unity。我拉了 Unity 和 Unity.MVC(都是 3.0.1304.0 版)。安装这些包会导致添加 3 个引用和 2 个项目文件(UnityConfig.cs 和 UnityMVCActivator.cs)。我不接触任何文件并尝试运行网络应用程序。主页显示很好,但是当我转到“注册”或“登录”页面时出现错误。使用新 Identity 模型的 AccountController 抛出以下异常(已修改):

The type IIdentityStoreContext does not have an accessible constructor.

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

[ResolutionFailedException: Resolution of the dependency failed, type = "Teamster.Web.Controllers.AccountController", name = "(none)". Exception occurred while: while resolving.

Exception is: InvalidOperationException - The type IIdentityStoreContext does not have an accessible constructor.

At the time of the exception, the container was:

Resolving Teamster.Web.Controllers.AccountController,(none) Resolving parameter "storeManager" of constructor Teamster.Web.Controllers.AccountController(Microsoft.AspNet.Identity.EntityFramework.IdentityStoreManager storeManager, Microsoft.AspNet.Identity.EntityFramework.IdentityAuthenticationManager authManager) Resolving Microsoft.AspNet.Identity.EntityFramework.IdentityStoreManager,(none) Resolving parameter "context" of constructor Microsoft.AspNet.Identity.EntityFramework.IdentityStoreManager(Microsoft.AspNet.Identity.IIdentityStoreContext context) Resolving Microsoft.AspNet.Identity.IIdentityStoreContext,(none) ]



AccountController 有一个无参数的构造函数,但异常(exception)情况是 AccountControllers 构造函数中使用的 IIdentityStoreContext 是统一的问题。 IIdentityStoreContext 在 Identity 框架中。

我该如何解决这个问题,是否可以通过以某种方式配置 Unity 容器来解决这个问题?

为了清楚起见,这里是默认的 AccountController ctors。:
public AccountController() 
{
IdentityStore = new IdentityStoreManager();
AuthenticationManager = new IdentityAuthenticationManager(IdentityStore);
}

public AccountController(IdentityStoreManager storeManager, IdentityAuthenticationManager authManager)
{
IdentityStore = storeManager;
AuthenticationManager = authManager;
}

最佳答案

非常感谢你!致 imran_ku07 @ ASP.NET 解决了我的问题。

我完全忘记了,如果我不指定其他参数,Unity 默认选择参数最多的构造函数。 ( Unity Framework IoC with default constructor )

我在 Unityconfig 中注册了以下内容,它解决了我的问题:

container.RegisterType<AccountController>(new InjectionConstructor());

关于asp.net-mvc - Visual Studio 2013 MVC 模板在与 Unity 一起使用时引发错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17688154/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com