0

nuget から structuremap と structuremap.mvc4 をインストールして、ASP.NET MVC 4 Web アプリケーションを作成しました。次に、同じく nuget から nservicebus および nservicebus.structuremap パッケージを追加しました。

以前に構造マップを使用していくつかの mvc4 アプリを問題なく作成しました。また、nservicebus と構造マップを使用した基本的な pub/sub のいくつかのチュートリアルに従って、動作させました。

しかし、nservicebus を mvc4 に structuremap で入れてみたところ、うまく動作しませんでした。私が直面している問題は、以下にリストされている MVC および MVC を使用した DI の nservice バス チュートリアルでは、開発者が組み込みの依存性注入コンテナーを使用することを望んでいるように見えることです。

http://support.nservicebus.com/customer/portal/articles/894008
http://support.nservicebus.com/customer/portal/articles/894123

以前に構造マップを使用したことがある場合、nuget パッケージはリゾルバーを適切に追加し、WebActivator を使用して初期セットアップを実行します。その後、コンテナがどうなるかわからないので、Configure.With().StructureMapBuilder(StructureMap Container)でNServiceBus Builderを設定するのに使えません。

nservicebus と structuremap を asp.net MVC4 でうまく機能させるにはどうすればよいですか? オペレーターのエラーはわかっていますが、この時点で何をすべきかわかりません。また、バージョン 3 には、いくつかの気の利いた構成ロールを持つ messageendpointconfig がどこかにありませんか? それはWeb環境では当てはまりませんか?コンテナへの参照を取得して移動できると考えましたが、そうではないようです。

編集:いくつかのコードを追加

    protected void Application_Start()
    {
        AreaRegistration.RegisterAllAreas();

        WebApiConfig.Register(GlobalConfiguration.Configuration);
        FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
        RouteConfig.RegisterRoutes(RouteTable.Routes);
        BundleConfig.RegisterBundles(BundleTable.Bundles);
        AuthConfig.RegisterAuth();

        Configure.With()
            .StructureMapBuilder(ObjectFactory.Container) //this obviously won't work
            .JsonSerializer()
            .Log4Net()
            .MsmqTransport()
                .IsTransactional(false)
                .PurgeOnStartup(true)
            .UnicastBus()
                .ImpersonateSender(false)
            .CreateBus()
            .Start(() => Configure.Instance.ForInstallationOn<NServiceBus.Installation.Environments.Windows>().Install());

    }

編集 2: 依存関係リゾルバーを Application_Start() に設定する場所を移動して StructureMap の問題を回避しても、NServiceBus は MessageForwardingInCaseOfFaultConfig と MsmqTransportConfig の構成を必要とします。

これらのプロパティは、エンドポイント構成のインターフェースを介して設定されたロールによって自動的に構成されることになっていることを覚えていると思いますか?

4

1 に答える 1

1

これらのセクションを web.config ファイルに追加する必要があります。

<configuration>
  <configSections>
    <section name="MessageForwardingInCaseOfFaultConfig" type="NServiceBus.Config.MessageForwardingInCaseOfFaultConfig, NServiceBus.Core" />
    <section name="MsmqTransportConfig" type="NServiceBus.Config.MsmqTransportConfig, NServiceBus.Core"/>
  </configSections>

  <MessageForwardingInCaseOfFaultConfig ErrorQueue="error"/>
  <MsmqTransportConfig NumberOfWorkerThreads="1" MaxRetries="5"/>
</configuration>

NServiceBus v3 はこれらを自動的に作成しません!

于 2013-03-19T00:56:14.110 に答える