В моем проекте я использую веб-api 2, autofac, в контроллере, который я ему вставляю, все работает нормально, пока я не установил Owin для проекта, когда я запускаю проект и перемещаюсь к контроллеру, который подал мне ошибку: «При попытке создать контроллер типа« AccountController »произошла ошибка. Убедитесь, что у контроллера нет конструктора без параметров». Вот мой код:Owin middleware не удалось зарегистрировать с помощью Autofac
В AccountController.cs:
[RoutePrefix("api/Account")]
public class AccountController : ApiControllerBase
{
private readonly IAccountService _accountService;
public AccountController(IAccountService accountService,
IEntityBaseRepository<Error> errorsRepository)
: base(errorsRepository)
{
_accountService = accountService;
}
// POST api/Account/Register
[AllowAnonymous]
[Route("Register")]
public async Task<IHttpActionResult> Register(UserModel userModel)
{
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
IdentityResult result = await _repo.RegisterUser(userModel);
IHttpActionResult errorResult = GetErrorResult(result);
if (errorResult != null)
{
return errorResult;
}
return Ok();
}
}
Startup.cs:
public class Startup
{
public void Configuration(IAppBuilder app)
{
ConfigureOAuth(app);
HttpConfiguration config = new HttpConfiguration();
WebApiConfig.Register(config);
app.UseCors(Microsoft.Owin.Cors.CorsOptions.AllowAll);
app.UseWebApi(config);
}
public void ConfigureOAuth(IAppBuilder app)
{
OAuthAuthorizationServerOptions OAuthServerOptions = new OAuthAuthorizationServerOptions()
{
AllowInsecureHttp = true,
TokenEndpointPath = new PathString("/token"),
AccessTokenExpireTimeSpan = TimeSpan.FromDays(1),
Provider = new SimpleAuthorizationServerProvider()
};
// Token Generation
app.UseOAuthAuthorizationServer(OAuthServerOptions);
app.UseOAuthBearerAuthentication(new OAuthBearerAuthenticationOptions());
}
}
AutofacWebApiConfig.cs:
public class AutofacWebapiConfig
{
public static IContainer Container;
public static void Initialize(HttpConfiguration config)
{
Initialize(config, RegisterServices(new ContainerBuilder()));
}
public static void Initialize(HttpConfiguration config, IContainer container)
{
config.DependencyResolver = new AutofacWebApiDependencyResolver(container);
}
private static IContainer RegisterServices(ContainerBuilder builder)
{
builder.RegisterApiControllers(Assembly.GetExecutingAssembly());
// EF BasicCommerceContext
builder.RegisterType<BasicCommerceContext>()
.As<DbContext>()
.InstancePerRequest();
builder.RegisterType<DbFactory>()
.As<IDbFactory>()
.InstancePerRequest();
builder.RegisterType<UnitOfWork>()
.As<IUnitOfWork>()
.InstancePerRequest();
builder.RegisterGeneric(typeof(EntityBaseRepository<>))
.As(typeof(IEntityBaseRepository<>))
.InstancePerRequest();
// Services
builder.RegisterType<EncryptionService>()
.As<IEncryptionService>()
.InstancePerRequest();
builder.RegisterType<MembershipService>()
.As<IMembershipService>()
.InstancePerRequest();
builder.RegisterType<ProductCategoryService>()
.As<IProductCategoryService>()
.InstancePerRequest();
builder.RegisterType<ProductService>()
.As<IProductService>()
.InstancePerRequest();
builder.RegisterType<NewsCategoryService>()
.As<INewsCategoryService>()
.InstancePerRequest();
builder.RegisterType<NewsService>()
.As<INewsService>()
.InstancePerRequest();
builder.RegisterType<CustomerService>()
.As<ICustomerService>()
.InstancePerRequest();
builder.RegisterType<StaticService>()
.As<IStaticService>()
.InstancePerRequest();
// Generic Data Repository Factory
builder.RegisterType<DataRepositoryFactory>()
.As<IDataRepositoryFactory>().InstancePerRequest();
Container = builder.Build();
return Container;
}
}
Пожалуйста, поддержите меня зарегистрироваться или настроить OWIN с помощью Autofac.
спасибо.