首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NServiceBus:无法为key: NServiceBus.Transport.ConnectionString设置值

NServiceBus:无法为key: NServiceBus.Transport.ConnectionString设置值
EN

Stack Overflow用户
提问于 2014-06-09 15:26:33
回答 2查看 2.1K关注 0票数 1

我正在开发的应用程序在某些操作中使用NServiceBus作为消息总线。在我的AppStartup中,我试图将NServiceBus配置为使用自定义Unicast配置,该配置正在成功运行。但是,当我用以下代码调用我的配置时:

代码语言:javascript
复制
    ObjectFactory.Configure(configure =>
        configure.For<IBus>().Use(
            Configure
                .With()
                .StructureMapBuilder(ObjectFactory.Container)
                .UseTransport<Msmq>()
                .UnicastBus()
                .SendOnly()
            )
        );

我明白这一例外:

无法为key: NServiceBus.Transport.ConnectionString设置值。设置已被锁定以进行修改。请在配置管道的前面移动任何配置代码。

下面是异常的堆栈跟踪(省略了机密部分):

代码语言:javascript
复制
   at NServiceBus.Settings.SettingsHolder.EnsureWriteEnabled(String key) in c:\BuildAgent\work\31f8c64a6e8a2d7c\src\NServiceBus.Core\Settings\SettingsHolder.cs:line 174
   at NServiceBus.Settings.SettingsHolder.Set(String key, Object value) in c:\BuildAgent\work\31f8c64a6e8a2d7c\src\NServiceBus.Core\Settings\SettingsHolder.cs:line 57
   at NServiceBus.Transports.ConfigureTransport`1.Configure(Configure config) in c:\BuildAgent\work\31f8c64a6e8a2d7c\src\NServiceBus.Core\Transports\ConfigureTransport.cs:line 21
   at NServiceBus.TransportReceiverConfig.UseTransport(Configure config, Type transportDefinitionType, String connectionStringName) in c:\BuildAgent\work\31f8c64a6e8a2d7c\src\NServiceBus.Core\Unicast\Transport\Config\TransportReceiverConfig.cs:line 55
   at NServiceBus.TransportReceiverConfig.UseTransport[T](Configure config, String connectionStringName) in c:\BuildAgent\work\31f8c64a6e8a2d7c\src\NServiceBus.Core\Unicast\Transport\Config\TransportReceiverConfig.cs:line 22
   at ...
   at StructureMap.Container.Configure(Action`1 configure) in c:\BuildAgent\work\767273992e840853\src\StructureMap\Container.cs:line 325
   at StructureMap.ObjectFactory.Configure(Action`1 configure) in c:\BuildAgent\work\767273992e840853\src\StructureMap\ObjectFactory.cs:line 386

要明确的是:这是在客户端,而不是在NServiceBus的实际总线端。进行此设置是为了能够向NServiceBus队列发送消息,该队列已经与另一个应用程序一起正常工作。我还确认此应用程序配置与其他应用程序相同。

我能得到的任何帮助都是很棒的:)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-06-10 13:23:41

解决了!

参考:总线对象在IOC配置中被实例化,但接着IOC试图重复这个过程。这导致实例化IBus对象的多个实例,这使IOC感到困惑,因为根据StructureMap,IOC对象只应该实例化一次。在运行配置函数之前,我对代码进行了检查,查看IBus对象是否已被IOC控制器实例化,从而解决了这个问题。

票数 1
EN

Stack Overflow用户

发布于 2014-10-20 13:54:32

我也有同样的问题。这对我有帮助。

代码语言:javascript
复制
Configure.With()
   .AutofacBuilder(container)
   .UseTransport<Msmq>()
   .MsmqSubscriptionStorage();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24123496

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档