我一直在寻找SO一段时间,但找不到我特定问题的答案:
如何使用Autofac将数据(通过构造函数或属性)注入到OWIN Startup类中?
我在Windows服务中使用Autofac,它也处理后端服务的创建等.所以我在那里进行所有配置读取和容器构建.
我希望能够注册Startup类,这样我就可以为CORS注入允许的原点,但即使我用这样的属性注册对象:
var builder = new ContainerBuilder();
// This will actually be read from config.
var origins = new[]
{
"http://localhost",
"http://localhost:8082",
};
builder.Register(c => new Startup(origins));
var container = builder.Build();
Run Code Online (Sandbox Code Playgroud)
在运行时,实例化Startup类时,callstack显示它来自外部代码,而我的Autofac构建器没有推送该属性.
理想情况下,我希望将Autofac注册保存在一个地方(Windows服务类),然后将所需数据注入Startup,这样我就可以执行以下操作(将allowedOrigins其设置为属性或通过构造函数注入)
public void Configuration(IAppBuilder app)
{
var configuration = new HttpConfiguration();
...
var origins = string.Join(",", allowedOrigins);
var cors = new EnableCorsAttribute(origins, "*", "*") { SupportsCredentials = true };
configuration.EnableCors(cors);
....
}
Run Code Online (Sandbox Code Playgroud)
任何想法将不胜感激.谢谢
peteski
UPDATE
我应该补充一点,在尝试Autofac注册和构建之后,我开始执行以下操作来启动OWIN自我主机应用程序:
var webApp = WebApp.Start<Startup>(baseAddress);
Run Code Online (Sandbox Code Playgroud)
通过与朋友的对话,他们建议创建Startup对象并将其传递给 …