Autofac + WCF REST 4.0 - PullRequest
       45

Autofac + WCF REST 4.0

1 голос
/ 13 июля 2011

Я создаю службу WCF 4.0 REST и хочу использовать Autofac в качестве DI-контейнера.По-видимому, я хочу иметь возможность вызывать параметризованный конструктор класса обслуживания (реализация контракта на обслуживание), который принимает несколько интерфейсов для работы.Эти интерфейсы должны быть зарегистрированы в контейнере Autofac, и я хочу, чтобы они разрешались и использовались при создании экземпляра моего класса обслуживания (вместо вызова не параметризованного конструктора, который используется по умолчанию).

Существует аналогичная проблема с контроллерами MVC, которая решается с помощью пакета интеграции Autofac MVC.Есть ли что-нибудь готовое для использования в WCF REST 4.0?Если нет, как лучше решить мою проблему?Например, есть ли что-то вроде DependencyResolver MVC, который я могу настроить для использования Autofac?

Обратите внимание, что с 4.0 они изменили некоторые концепции в WCF REST.Например, теперь нет файла .svc, маршрутизации достаточно, чтобы вызвать требуемый метод.Я довольно новичок в WCF REST 4.0, поэтому я хотел бы попросить сообщество предложений, прежде чем потратить несколько дней на реализацию какого-то огромного настраиваемого механизма.Увы, быстрый поиск по интернету не дал мне приемлемого решения.

Ответы [ 2 ]

2 голосов
/ 15 ноября 2012

В вашем глобальном запуске приложения:

//Build a container with your service registered.
var builder = new ContainerBuilder();
builder.RegisterType<YourService>();
var container = builder.Build();

//Set AutofacHostFactory.Container with this built container.
AutofacHostFactory.Container = container;

//Use AutofacWebServiceHostFactory instead of WebServiceHostFactory
var factory = new AutofacWebServiceHostFactory();

//Add your routes
RouteTable.Routes.Add(new ServiceRoute("YourServiceUrl", factory, typeof(YourService)));

Вот и все.

0 голосов
/ 13 июля 2011

Вы смотрели на существующую интеграцию WCF поддержку?

...