C# Unity与web api示例IdentityServer 3
我试图使用IdentityServer3示例中的此项目, 对于web api服务,我想使用Unity作为我的依赖注入策略,我从nuget package Unity.WebApi获得了它,因此,它在我的app_start文件夹中创建了一个新文件,我们必须在其中注册类型,在我的例子中,我只有一个接口。像这样C# Unity与web api示例IdentityServer 3,c#,dependency-injection,asp.net-web-api2,katana,identityserver3,C#,Dependency Injection,Asp.net Web Api2,Katana,Identityserver3,我试图使用IdentityServer3示例中的此项目, 对于web api服务,我想使用Unity作为我的依赖注入策略,我从nuget package Unity.WebApi获得了它,因此,它在我的app_start文件夹中创建了一个新文件,我们必须在其中注册类型,在我的例子中,我只有一个接口。像这样 var container = new UnityContainer(); container.RegisterType<IApp, AppService>(); GlobalCo
var container = new UnityContainer();
container.RegisterType<IApp, AppService>();
GlobalConfiguration.Configuration.DependencyResolver = new UnityDependencyResolver(container);
这是我在startup类中的配置方法
public void Configuration(IAppBuilder app)
{
JwtSecurityTokenHandler.InboundClaimTypeMap = new Dictionary();
app.UseIdentityServerBearerTokenAuthentication(new IdentityServerBearerTokenAuthenticationOptions
{
Authority = "https://localhost:44333/core",
RequiredScopes = new[] { "write" }
});
UnityConfig.RegisterComponents();
app.UseWebApi(WebApiConfig.Register());
}
所以,很简单,不是吗?
但我不知道我遗漏了什么,因为当我试图从控制器调用一个简单操作时,它会抛出一个错误:
{消息:发生错误,异常消息:错误
尝试创建“TDataController”类型的控制器时发生。
确保控制器具有无参数的公用程序
构造函数,异常类型:System.InvalidOperationException,StackTrace:
在
PS:如果Dominick Baier读了这个问题,我想对我在他的问题追踪器上的帖子说声抱歉。所以,我自己解决了,我就是这样做的 如果你在我的创业课程中看到:
app.UseWebApi(WebApiConfig.Register());
因此,在该方法中,我添加了这一行以使用dependencyresolver
public static HttpConfiguration Register()
{
config.DependencyResolver = UnityConfig.RegisterComponents();
return config;
}
我将UnityConfig.RegisterComponents的返回类型更改为
public static UnityDependencyResolver RegisterComponents()
{....
var container = new UnityContainer();
///here all my registertypes
return new UnityDependencyResolver(container);
}
这就是团结一致解决这个问题的方法,我希望这会有所帮助
public static UnityDependencyResolver RegisterComponents()
{....
var container = new UnityContainer();
///here all my registertypes
return new UnityDependencyResolver(container);
}