我有一个API( eg: ItemController.cs
),这将从在运行时请求头获得授权令牌。 与令牌,那么只有我传进我的服务类( eg: ServiceItem.cs
)。
以下是我做到了。
在Startup.cs,注册我ServiceItem
var builder = new ContainerBuilder(); builder.RegisterType<ServiceItem>(); container = builder.Build(); //Note that, my container is a static variable
在我的API,我解决它以这种方式:
[Authorize] [Route("GetData")] [HttpGet] public IHttpActionResult GetData([FromUri] Filter filter) { using (var scope = Startup.container.BeginLifetimeScope()) { var serviceItem = Startup.container.Resolve<ServiceItem>( new NamedParameter("token", Request.GetHeader("Authorization")) ); return Ok(serviceItem.getItem(filter)); //filter is a param from webAPI } }
题:
请问这是怎么Autofac通常的Web API工作? 首先,我使用的是全局静态IContainer
。 二,代码重复一下,如果我揭露一些更多的功能。
我想解决这个ServiceItem
在API的构造。 但授权令牌还不可用。
任何建议表示赞赏。
PS:
这里是我的ServiceItem
其中,在构造函数中,有一个PARAM“令牌”
public class ServiceItem
{
public string token;
public ServiceItem(string token)
{
this.token = token;
}
public void doSomething()
{
//based on token, do processing
}
}