У меня есть код вроде:
int value = 5;
MessageBox.Show ( value );
и MessageBox. Show
жалуется, говоря:
"не может преобразовать из int в Autofac Issue Plus 2 Другие вопросы Autofac ПРИМЕЧАНИЕ. Здесь есть 3 вопроса, и я не задавал отдельных вопросов, поскольку все они в некоторой степени связаны с одним и тем же кодом. У меня есть следующий код, который регистрирует соединение с моей RavenDB ...
ПРИМЕЧАНИЕ: Здесь есть 3 вопроса, и я не задавал отдельных вопросов, поскольку все они в некоторой степени связаны с одним и тем же кодом.
У меня есть следующий код, который регистрирует соединение с моей RavenDB в Application_Start один раз за жизненный цикл приложения:
var store = new DocumentStore { Url = "http://localhost:8080" }; store.Initialize(); builder.RegisterInstance(store).SingleInstance();
Теперь это работает нормально, и это то, что должно быть создано только один раз за жизненный цикл приложения. Теперь я хотел добавить DocumentSession в Autofac, поэтому я попытался добавить это в Application_Start:
var session = store.OpenSession(); builder.RegisterInstance(session).SingleInstance();
В моем UserRepository у меня есть следующий конструктор:
public UserRepository(DocumentStore store, DocumentSession session)
Когда я пытаюсь запустить это, Я получаю следующую ошибку времени выполнения:
Не удается разрешить параметр 'Raven.Client.Document.DocumentSession Session' конструктора 'Void .ctor (Raven.Client.Document.DocumentStore, Raven.Client.Document.DocumentSession)'
Эта ошибка для меня звучит так, как будто Autofac не думает, что у него есть DocumentSession, однако именно это возвращает store.OpenSession (), поэтому он должен. Кто-нибудь знает, что может вызвать эту ошибку? Правильно ли я устанавливаю переменную сеанса (она аналогична переменной хранилища, которая работает нормально)?
Еще одна вещь, которая может иметь или не быть связана с вышеуказанной проблемой, - это как мне добавить экземпляр объекта в Autofac на запрос, а не на жизненный цикл приложения? Хотя объект RavenDB DocumentStore следует создавать только один раз в жизненном цикле приложения, DocumentSession должен создаваться один раз для каждого запроса (возможно, создание его для каждого уровня приложения вызывает указанную выше ошибку).
Последний вопрос, который я задам по поводу Autofac (слегка связанный с приведенным выше кодом), касается освобождения объектов. Если вы посмотрите на это руководство:
Последний фрагмент кода:
ObjectFactory.ReleaseAndDisposeAllHttpScopedObjects();
и цель этого кода - предотвратить утечку сеансов. Теперь нужно ли мне беспокоиться об этом для Autofac, и если да, то как мне это сделать в Autofac?