2017-07-02 4 views
1

Je dois manipuler avec des données dans un fil séparé dans les vergers cms. Le problème survient lorsque la requête se termine et que les services sont supprimés. Quelle est la meilleure façon de créer une session db, ou comment manipuler avec des données après la fin de la requête?Créer une session verger

EDIT:

J'essaie quelque chose comme ce code

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();

Mais je ne sais pas quoi exactement pour vous inscrire, il me lance erreur lors de la résolution de dépôt.

+0

Mettez tout en œuvre pour résoudre le problème. – SteveFest

+0

Je pense à modifier la portée de la session à vie, mais je ne pense pas que ce soit une bonne idée. Je pense que ce serait mieux de créer un nouveau conteneur, mais comment, où? Je peux essayer de créer un nouveau conteneur lorsque je démarre un nouveau thread et que j'inscris les instances dont j'ai besoin? Est-ce une bonne approche? – user8244302

+0

Je pense que le meilleur moyen est de créer une tâche de fond. – urbanit

Répondre

0

La création de threads sur un serveur Web est mauvaise, elle réduit sa capacité à traiter plusieurs requêtes simultanément. Vous devriez envisager de transférer votre tâche vers un autre processus, comme un service Windows, en communiquant via MSMQ par exemple.

Sinon, envisagez de laisser instancier votre tâche et d'éliminer les services et les sessions dont elle a elle-même besoin, au lieu d'utiliser ceux qui sont liés au cycle de vie de la demande. Vous devrez peut-être configurer pour cela un résolveur de dépendance dédié permettant à la tâche de contrôler explicitement la durée de vie des objets qu'elle demande au résolveur de dépendances.