【发布时间】:2017-08-10 07:41:29
【问题描述】:
我有一个使用 StructureMap 的 Web API 应用程序,并且我引入了最新版本的 NServiceBus(版本 6)来引入 pub/sub 以用于更改数据。
问题是我似乎无法将现有容器注入到 StructureMapBuilder。
结构如下:
public class WebApiRegistry : Registry
{
public WebApiRegistry()
{
For(typeof(IRepository<>)).Use(typeof(Repository<>));
For(typeof(IProcessor<>)).Use(typeof(PassThroughProcessor<>));
For<IUnitOfWork>().Use<UnitOfWork>();
For<ILog>().Use(container => LogManager.GetLogger("My.WebApi"));
}
}
然后在 Global.asax 的 Aplication_Start 方法中注册此注册表:
GlobalConfiguration.Configuration.UseStructureMap<WebApiRegistry>();
问题出在这里,方法相同:
var endpointConfiguration = new EndpointConfiguration("My.WebApi.Sender");
endpointConfiguration.UseTransport<MsmqTransport>();
endpointConfiguration.UseSerialization<NServiceBus.JsonSerializer>();
endpointConfiguration.UsePersistence<InMemoryPersistence>();
endpointConfiguration.UseContainer<StructureMapBuilder>(); //No idea how to get the existing container in here???
endpointConfiguration.SendOnly();
我不知道如何向 NServiceBus 注册现有容器。
我有一个使用 AutoFac 的示例,这可能是因为它是 NServiceBus 选择的默认 DI 框架,但我很想让它与 StructureMap 一起使用。
有什么想法吗?
【问题讨论】:
-
感谢您的回复,但不幸的是,这不起作用:'没有默认实例已注册,并且无法自动确定类型'NServiceBus.IMessageSession'是我调用控制器操作时的结果,即配置为发送。此外,我希望避免在 Global.asax 中重复 WebApiRegistry 代码。
-
检查提供的答案
标签: c# asp.net-web-api dependency-injection nservicebus structuremap