【发布时间】:2014-01-09 12:38:22
【问题描述】:
我正在尝试初始化一个调用 EPiServer.Framework (v7.0.859.1) 和其他 Mediachase (v7.0.243) 库的 NServiceBus (v4.3.2) 端点来初始化对数据库的访问。我的班级ServerEndpoint 实现了NServiceBus.IWantToRunWhenTheBusStopsAndStarts。它的构造函数依赖于StructureMap.IContainer,以便让容器在初始化例程Start() 中使用。我已将依赖项添加到项目中以使用带有 NServiceBus 的 StructureMap 2.6.4。
但是,当我启动端点时,我不断收到 System.EntryPointNotFoundException 异常消息“未找到入口点”:
2014-01-07 23:16:30,581 [14] ERROR NServiceBus.Unicast.UnicastBus [(null)] <(null)> - System.EntryPointNotFoundException: Entry point was not found.
at StructureMap.IContainer.Configure(Action`1 configure)
at Mediachase.Commerce.Initialization.CommerceInitialization.ConfigureContainer(ServiceConfigurationContext context)
at clin.Integration.Commerce.Initialization.InitCommerceServices(IContainer container1) in c:\dev\clin\kimball\Trunk\NServiceBus\clin.ServiceBus\clin.Integration.Commerce\Initialization.cs:line 18
at clin.Web.CatalogChangeEndpoint.ServerEndpoint.Start() in c:\dev\clin\kimball\Trunk\NServiceBus\clin.ServiceBus\clin.Web.CatalogChangeEndpoint\CatalogChangeEndpoint.cs:line 26
at NServiceBus.Unicast.UnicastBus.<>c__DisplayClass1d.<Start>b__1b() in y:\BuildAgent\work\31f8c64a6e8a2d7c\src\NServiceBus.Core\Unicast\UnicastBus.cs:line 804 could not be started.
我的创业班:
class ServerEndpoint : IWantToRunWhenBusStartsAndStops
{
public ServerEndpoint(StructureMap.IContainer container)
{
_container = container;
}
public void Start()
{
Integration.Commerce.Initialization.InitCommerceServices(_container);
Integration.Commerce.Catalog.InitCommerceCatalog();
}
public void Stop() { }
public IContainer _container { get; set; }
}
初始化例程:
public static void InitCommerceServices(IContainer container)
{
var locator = new EPiServer.ServiceLocation.StructureMapServiceLocator(container);
var context = new EPiServer.ServiceLocation.ServiceConfigurationContext(HostType.Undefined, container);
new Mediachase.Commerce.Initialization.CommerceInitialization().ConfigureContainer(context);
EPiServer.ServiceLocation.ServiceLocator.SetLocator(locator);
}
端点配置:
public class EndpointConfig : IConfigureThisEndpoint, IWantCustomInitialization, AsA_Server
{
public void Init()
{
Configure.Serialization.Json();
Configure.With()
.StructureMapBuilder()
.DefiningCommandsAs(MsgConvention.MessageConventions.IsCommandType)
.DefiningEventsAs(MsgConvention.MessageConventions.IsEventType)
.DefiningMessagesAs(MsgConvention.MessageConventions.IsInternalMessage);
}
}
我没有在 Web 应用程序中运行此代码(显然?)。
我已执行以下操作来尝试解决问题:
- 检查引用程序集的版本是否存在冲突
- 在 InitCommerceServices 中创建一个本地容器变量,例如
container = StructureMap.ObjectFactory.Container;,而不是使用依赖注入。
【问题讨论】:
-
你能发布堆栈跟踪吗?
-
@John 感谢您的浏览。很抱歉浪费您的时间。
标签: initialization nservicebus structuremap episerver episerver-7