2009-10-08 3 views
8

Может ли кто-нибудь помочь?Unity и WCF Library: Где загрузить единство в библиотеке wcf?

Я создал библиотеку WCF (не приложение) и я буду принимать это на странице SVC IIS ..

Но я был хотел, чтобы загрузить материал единства в родовом месте ... Я мог бы загрузить его в global.asax, но затем привязана к контейнеру IIS Asp.net, и при выполнении TDD эта часть не будет выполняться, поэтому не будет работать мой решает.

WCF Library - это чистый класс, поэтому я сомневаюсь, что могу использовать любые события, такие как OnStartup и т. Д.?

Единственный способ я подумал о том, что имея службу наследует от базового класса, а также интерфейс, который будет вызывать статический класс какого-то и делать самонастройку единства ..

Я немного потерял, это единственный способ или есть какой-то способ, о котором я не знаю.

В принципе идея ... Кто никогда не называет библиотеку ФОС то инъекции единство должно произойти ..

Любые идеи?

Благодаря

ответ

5

Существует несколько способов решения этой проблемы. Вот вам два лучших варианта:

Вы можете создать собственный ServiceHost и переопределить InitializeRuntime

Вы можете создать класс с именем ApplicationStart в каталоге App_Code с публичным статическим методом AppInitialize (это немного запаха, хотя):

public static class ApplicationStart 
{ 
    public static void AppInitialize() 
    { 
     // Initialise IoC container 
    } 
} 

Wenlong Dong имеет other methods on his blog.

+0

спасибо, я собираюсь использовать InitializeRuntime –

0

Вы можете использовать IInstanceProvider для создания объектов обслуживания с помощью Unity или другой контейнер МОК. Проверьте this сообщения блога, чтобы узнать, как это сделать.

Далее вы можете использовать IContractBehavior, реализованный в качестве атрибута, чтобы добавить IInstanceProvider в DispatchRuntime, установив InstanceProvider в методе ApplyDispatchBehavior.

0

В настоящее время пакет NuGet с открытым исходным кодом называется Unity.WCF, который может позаботиться об этом для вас.

См. http://unitywcf.codeplex.com/ для получения дополнительной информации и кода.

Смежные вопросы