gpt4 book ai didi

initialization - 结构图异常 : "Entry point was not found" in NServiceBus project for EPiServer integration

转载 作者:行者123 更新时间:2023-12-04 06:49:47 25 4
gpt4 key购买 nike

我正在尝试初始化一个 NServiceBus (v4.3.2) 端点,它调用 EPiServer.Framework (v7.0.859.1) 和其他 Mediachase (v7.0.243) 库来初始化对数据库的访问。我的类 ServerEndpoint 实现了 NServiceBus.IWantToRunWhenTheBusStopsAndStarts。它的构造函数依赖于 StructureMap.IContainer,以便让容器在初始化例程 Start() 中使用。我已将依赖项添加到项目中以将 StructureMap 2.6.4 与 NServiceBus 结合使用。

但是,当我启动端点时,我不断收到 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; 而不是使用依赖注入(inject)。

最佳答案

原来是StructureMap不同版本之间的冲突。 (有 many meanings to System.EntryPointNotFoundException )。原来的StructureMap dll来自EPiServer,安装在GAC中。较新的 StructureMap 来自 NServiceBus 的 StructureMap nuget 包。我通过在 <configuration>/<runtime> 下的每个端点的 App.config 中添加绑定(bind)重定向来解决两个版本之间的冲突。描述的元素in this msdn page

<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="StructureMap" publicKeyToken="e60ad81abae3c223" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-2.6.4.0" newVersion="2.6.4.0" />
</dependentAssembly>
</assemblyBinding>

旁注:升级包时,NuGet 应该会自动为您添加绑定(bind)重定向。我不知道它是否在安装软件包而不是升级时这样做。因为我们使用的是 SlowCheetah,所以我永远不会知道它在这种情况下是否这样做了。配置文件转换使用我们自己的文件作为源 App.config,并且在生成时会覆盖这些文件。 (也许这个问题为使用原始文件作为 SlowCheetah 转换的来源提供了理由。)

关于initialization - 结构图异常 : "Entry point was not found" in NServiceBus project for EPiServer integration,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20988189/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com