Identity Server 3中的MVC控制器无法使用DI

时间:2017-09-28 10:31:39

标签: asp.net-mvc asp.net-mvc-4 dependency-injection identityserver3

我的Identity Server 3上有一些与用户注册过程相关的自定义屏幕。它们是使用MVC实现的。我添加了一些带有视图和模型的控制器。我已达到一点,我想在控制器中注入一些依赖项,如下所示:

import org.springframework.cloud.contract.spec.Contract

Contract.make {
    request {
        method(GET())
        url("/v2/entity")
        headers {
            accept(applicationJson())
        }
    }
    response {
        status 200
        body( """
         {
            "saveLink": "http://<requestedHost>:<requestedPort>/v2/entity/save"
          }
        )
    }
}

我使用了#34;开箱即用的&#34;依赖解析器,他们有 - Autofac。

 private readonly IMailDeliveryService _mailDeliveryService;

 public CreateUserAccountController(IMailDeliveryService mailDeliveryService)
 {
     this._mailDeliveryService = mailDeliveryService;
 }

当我尝试发出请求并尝试设置我的控制器时,我得到:

app.Map("/identity", idsrvApp =>
{
    var corsPolicyService = new DefaultCorsPolicyService()
    {
        AllowAll = true
    };

    var idServerServiceFactory = new IdentityServerServiceFactory()
                    .UseInMemoryClients(Clients.Get())
                    .UseInMemoryScopes(Scopes.Get());

    // ...

    idServerServiceFactory.Register(new Registration<IMailDeliveryService, MailDeliveryService>());

    var options = new IdentityServerOptions
    {
        Factory = idServerServiceFactory,
        // ...
        },
        // ...
    };

    idsrvApp.UseIdentityServer(options);
});

我认为问题在于MVC和OWIn有不同的管道,但不确定。

1 个答案:

答案 0 :(得分:0)

Identityserver 3使用自定义视图引擎。这使用了您已经显示的绑定。 MVC没有内置DI。您需要单独配置它。如果您想使用AutoFac,那么我确定有关于如何设置它的文档。