NServiceBus 3.3.3 を使用しています。コンテナーとして Ninject を使用しており、次のメソッドにバインドしてモジュール内のバスを初期化しています。
Bind<IBus>().ToMethod(context =>
{
return CreateBus();
}).InSingletonScope();
private IBus CreateBus()
{
var bus = NServiceBus.Configure.With()
.NinjectBuilder(this.Kernel)
.DefineEndpointName("MyEndpointName")
.MsmqTransport()
.IsTransactional(true)
.PurgeOnStartup(false)
.DisableRavenInstall()
.DisableTimeoutManager()
.InMemorySubscriptionStorage()
.XmlSerializer()
.UnicastBus()
.ImpersonateSender(false)
.CreateBus();
return bus.Start(() => Configure.Instance.ForInstallationOn<NServiceBus.Installation.Environments.Windows>().Install());
}
同じコードが別の (MVC4) プロジェクトで正常に動作しますが、私の WCF WAS サービスでは、のtransport
メンバーUnicastBus
が常に null であるため、824 行目が失敗するようtransport.MaxThroughputPerSecond = license.MaxThroughputPerSecond;
です。
オブジェクト参照がオブジェクト インスタンスに設定されていません。NServiceBus.Unicast.UnicastBus.NServiceBus.IStartableBus.Start(Action startupAction) c:\TeamCity\buildAgent\work\nsb.master_2\src\unicast\NServiceBus.Unicast\UnicastBus.cs:line 824 at Access.Cloud.WebService .Modules.NServiceBusModule.CreateBus() in l:\Projects\aCloud\InsightIntegration\Access.Cloud.WebService\Modules\NServiceBusModule.cs:line 47 at Access.Cloud.WebService.Modules.NServiceBusModule.b__0(IContext context) in l :\Projects\aCloud\InsightIntegration\Access.Cloud.WebService\Modules\NServiceBusModule.cs: c:\Projects\Ninject\ninject\src\Ninject\ の Ninject.Activation.Provider'1.Create(IContext context) の 25 行目Activation\Provider.cs: c の Ninject.Activation.Context.Resolve() の 38 行目:
System.Linq.Enumerable.SingleOrDefault[TSource](IEnumerable`1 ソース) で System.Linq.Enumerable.WhereSelectArrayIterator2.MoveNext() で
私もデバッガーでそれをチェックしましたが、十分transport
にnullであることを確認してください。
私はそれが何か環境的なものだと推測していますが、トランスポートMsmqTransport()
は が呼び出されたときにセットアップされるいくつかのバインディングから来ているだけだと思います。モジュールをロードするコードを Ninject Web ブートストラップから Global.asax に移動しようとしましたが、違いはありませんでした。
ヘルプやガイダンスをいただければ幸いです。