我正在使用带有 AspNet Core 1.0 RTM 的结构图。看来他们已经使用属性上的 FromServices 属性删除了。这会破坏下面的代码,因为我现在无法注入 ClaimsPrincipal。我不确定如何让 DI 系统获取此属性。我是否需要创建自定义 InputFormatter 或其他东西。要让它再次工作似乎需要做很多工作。
启动.cs
public class Startup {
public IServiceProvider ConfigureServices(IServiceCollection services) {
var container = new Container();
container.Configure(i => {
i.For<IHttpContextAccessor>()
.Use(new HttpContextAccessor());
i.For<ClaimsPrincipal>()
.Use(x => x.GetInstance<IHttpContextAccessor>().HttpContext.User);
});
container.Populate(services);
return container.GetInstance<IServiceProvider>();
}
}
模型.cs
public class Model {
//[FromServices] <-- worked in RC1
public ClaimsPrincipal Principal { get; set; }
public string Value => Principal.Identity.Name;
}
测试控制器.cs
public class TestController : Controller {
public IActionResult Test(Model model){
return Ok();
}
}