我有一個使用StructureMap的Web API應用程序,並且我已經介紹了最新版本的NServiceBus(版本6)來引入pub/sub以更改數據。如何配置NServiceBus 6以在Web API中使用現有的StructureMap容器?
問題是我似乎無法獲得現有的容器注入到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一起工作。
任何想法?
這應該工作。 https://docs.particular.net/samples/containers/structuremap/ – Nkosi
感謝您的迴應,但不幸的是,這不起作用:'沒有默認實例註冊,不能自動確定的類型'NServiceBus.IMessageSession'是當我調用配置爲發送的控制器操作時的結果。此外,必須重複Global.asax中的WebApiRegistry代碼是我想避免的。 –
提供檢查答案 – Nkosi