2017-07-02 2 views
1

オーチャードCMSの分離されたスレッドでデータを操作する必要があります。 要求がセッションを終了し、サービスが破棄される問題です。 dbセッションを作成する最も良い方法は何ですか、またはリクエスト終了後にデータを操作する方法は?オーチャードセッションを作成する

EDIT:

私はこのコードのようなもの

var builder = new ContainerBuilder(); builder.RegisterGeneric(typeof(Repository<>)).As(typeof(IRepository<>)).InstancePerLifetimeScope(); //builder.RegisterInstance(_shellSettings = new ShellSettings { Name = ShellSettings.DefaultName }); builder.RegisterType<TransactionManager>().As<ITransactionManager>().InstancePerLifetimeScope(); builder.RegisterType<SessionFactoryHolder>().As<ISessionFactoryHolder>().InstancePerLifetimeScope();

をしようとしていますが、私はリポジトリを解決するとき、それは私にエラーがスローされます正確に何を登録するには、知りません。

+0

問題を解決するためにあなたの努力を示してください。 – SteveFest

+0

私はセッションの変更生涯の範囲について考えるが、それは良い考えだとは思わない。私はそれが新しいコンテナを作成するより良いと思うが、どうやって、どこ? 新しいスレッドを起動して必要なインスタンスを登録すると、新しいコンテナを作成できますか?それは良いアプローチですか? – user8244302

+0

私は、最善の方法はバックグラウンドタスクを作成することだと思います。 – urbanit

答えて

0

Webサーバー上のスレッドを生成するのが悪いため、多数の要求を同時に処理する能力が低下します。 Windowsサービスのような他のプロセスにタスクをオフロードし、MSMQを例にして通信することを検討する必要があります。

それ以外の場合は、タスクが要求ライフサイクルにバインドされているサービスやセッションをインスタンス化して処理することを検討してください。このために専用の依存関係リゾルバをセットアップする必要があるかもしれません。これは、依存関係リゾルバに要求するオブジェクトの寿命をタスクが明示的に制御できるようにするためです。

関連する問題