У меня есть действующее веб-приложение, написанное на MVC3, с использованием Autofac и Autofac.Mvc3. Теперь мне нужно использовать SignalR, поэтому я потянул Autofac.SignalR через Nuget, который обновил Autofac.dll до 3.0.0.Проблема с интеграцией Autofac + MVC3 + SignalR
Что я сейчас вижу, это то, что когда я пытаюсь зарегистрировать тип, я получаю исключение MissingMethodException, когда я вызываю InstancePerHttpRequest
как время жизни для типа.
В качестве упражнения я попытался сделать то, что делает регистрация автозапуска моего текущего приложения в новом приложении MVC4, с Autofac.Mvc4 и Autofac.SignalR, который, похоже, работает нормально.
Любая помощь будет оценена
Пример строки, которые вызывают ошибку
builder.RegisterType<CompanyController>().InstancePerHttpRequest();
// or
builder.Register(x => x.Resolve<ISessionFactory.
().OpenSession()).InstancePerHttpRequest();
исключением
метод не найден: «Autofac.Builder.IRegistrationBuilder
3<!0,!1,!2> Autofac.Builder.IRegistrationBuilder
3. InstancePerMatchingLifetimeScope (System.Object).
StackTrace
на Autofac.Integration.Mvc.RegistrationExtensions.InstancePerHttpRequest [TLimit, TActivatorData, TStyle] (регистрации) IRegistrationBuilder`3 в DMS.Website.MvcApplication.Application_Start() в d: \ Code \ Onset \ DOT \ trunk \ DMS \ DMS.Website \ Global.asax.cs: строка 167
Боюсь, вам здесь не повезло. Вы не можете использовать SignalR с MVC3 и Autofac, потому что нет поддержки Autofac3 в MVC3. См. Также: http://stackoverflow.com/a/16719213/872395 Итак, вам нужно перейти на MVC4 или вам нужно создать собственную версию Autofac.MVC3, которая зависит от Autofac 3.0+. – nemesv
Я пришел к такому же выводу. Не могли бы вы опубликовать это в качестве ответа? – damienc88
Вместо этого вы можете использовать InstancePerLifetimeScope. – jgauffin