我将应用程序升级到Web Api 2,并且Application_Start不会触发在IIS Express上运行的升级后.我的确遵循官方升级路径http://www.asp.net/mvc/tutorials/mvc-5/how-to-upgrade-an-aspnet-mvc-4-and-web-api-project-to- aspnet-mvc-5-and-web-api-2并检查了我的设置.
该应用程序使用StructureMap MVC 4来注入依赖项.因此,WebActivator的PreApplicationStartMethod会被触发,依赖项解析器也会被正确设置.之后,无法追踪其他执行.我已启用编辑并继续,但在Application_Start的开头没有命中断点.
以下是我尝试过的所有内容:禁用PreApplicationStartMethod并运行应用程序b.更改Global.asax的编译设置和c后面的代码.创建另一个具有类似结构的WebApi2项目,并设置减去实际代码,并且工作正常
我已经清理并运行了应用程序; 还清理了Temp ASP.NET文件夹
感谢帮助解决这个问题.
我正在使用Unity.MVC4依赖注入来访问我的服务.注入到我的Controller构造函数中时,一切都正常,但我现在要做的是在我的过滤器类中使用属性注入,这样我就可以从内部访问我的数据库了.
在我开始这个问题之前,我用Google搜索并尝试了不同的示例,但我找不到适合我的解决方案..
Bootstrapper.cs
public static class Bootstrapper
{
public static IUnityContainer Initialise()
{
var container = BuildUnityContainer();
DependencyResolver.SetResolver(new UnityDependencyResolver(container));
return container;
}
private static IUnityContainer BuildUnityContainer()
{
var container = new UnityContainer();
container.RegisterType<IAccountRepository, AccountRepository>();
container.RegisterType<IAdministrationRepository, AdministrationRepository>();
container.RegisterType<IUploadDirectlyRepository, UploadDirectlyRepository>();
container.RegisterType<IUserRepository, UserRepository>();
container.RegisterType<INewsRepository, NewsRepository>();
container.RegisterType<IContactRepository, ContactRepository>();
// register all your components with the container here
// it is NOT necessary to register your controllers
// e.g. container.RegisterType<ITestService, TestService>();
RegisterTypes(container);
return container;
}
public static void RegisterTypes(IUnityContainer container)
{ …Run Code Online (Sandbox Code Playgroud) asp.net-mvc dependency-injection unity-container action-filter asp.net-mvc-4
如果我冲浪,http://localhost:58472/Account/Register我就有这个例外
System.InvalidOperationException:当前类型IUserStore<ApplicationUser>是一个接口,无法构造.你错过了类型映射吗?
这是我的代码:
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>())
);
// other code
return manager;
}
}
Run Code Online (Sandbox Code Playgroud)
这里是控制器的代码:
[Authorize]
public class AccountController : Controller
{
private ApplicationSignInManager _signInManager;
private ApplicationUserManager _userManager;
public AccountController()
{
}
public AccountController(
ApplicationUserManager userManager,
ApplicationSignInManager signInManager)
{
UserManager = userManager;
SignInManager = signInManager;
}
public ApplicationSignInManager SignInManager …Run Code Online (Sandbox Code Playgroud) c# asp.net-mvc user-management unity-container invalidoperationexception
我正在使用 ASP.NET MVC 5、EF6、ASP.NET Identity 和 Unity 作为 IoC,并且我想在构建网站时使用 Identity 框架提供的功能来操作用户和注册。
启动文件
public partial class Startup
{
public void Configuration(IAppBuilder app)
{
ConfigureAuth(app);
}
public void ConfigureAuth(IAppBuilder app)
{
// Configure the db context, user manager and signin manager to use a single instance per request
app.CreatePerOwinContext(DbContext.Create);
app.CreatePerOwinContext<ApplicationUserManager>(ApplicationUserManager.Create);
app.CreatePerOwinContext<ApplicationSignInManager>(ApplicationSignInManager.Create);
app.CreatePerOwinContext<ApplicationRoleManager>(ApplicationRoleManager.Create);
app.UseCookieAuthentication(new CookieAuthenticationOptions
{
AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
LoginPath = new PathString("/Auth/Login"),
Provider = new CookieAuthenticationProvider
{
// Enables the application to validate the security stamp when the user logs in.
// …Run Code Online (Sandbox Code Playgroud)