WCF Виндзор Контейнер Регистрация - PullRequest
2 голосов
/ 29 марта 2012

Моя цель - зарегистрировать Виндзорский Контейнер для моей службы WCF без http. Однако я не могу понять, куда поместить код для регистрации и инициализации контейнера.

Я пытался положить ...

Factory="Castle.Facilities.WcfIntegration.DefaultServiceHostFactory, Castle.Facilities.WcfIntegration"

... в моем объявлении ServiceHost в моем файле .svc, однако это не вызывает метод Application_Start () в моем Global.asax.cs.

Я также пытался поместить статический метод в класс следующим образом ...

public static void AppInitialize()
{
}

... однако этот метод также не срабатывает.

Метод, полученный от Виндзорского замка, ...

Ядро было пустым, ты забыл позвонить DefaultServiceHostFactory.RegisterContainer ()?

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

Спасибо.

Ответы [ 3 ]

1 голос
/ 24 августа 2013

Это не проблема AppInitialize.Что вы должны сделать, это добавить Castle.Facilities.WcfIntegration.WcfFacility в ваш контейнер:

container.AddFacility<Castle.Facilities.WcfIntegration.WcfFacility>();

После добавления все должно работать без получения этого исключения.

  • Джейсон
0 голосов
/ 08 августа 2012

Я знаю, что об этом спрашивали некоторое время назад, но вот несколько ловушек, которые вы, возможно, захотите проверить.

  • Правильны ли файлы Global.asax и Global.asax.cs?Ваш Global.asax указывает на правильный файл codebehind?
  • Является ли подпись защищенного пустого метода Application_Start (отправитель объекта, EventArgs e) правильной?
  • Можете ли вы заставить Application_Start ()Огонь, если вы не добавите туда специальный код Castle Windsor?

Global.asax можно добавить, щелкнув правой кнопкой мыши по проекту и найдя глобальный файл приложения.Убедитесь, что файл .asax содержит

<%@ Application Codebehind="Global.asax.cs" Inherits="YourNamespace.Global" Language="C#" %>

и ничего больше.

(Если вы нашли решение на своем телефоне, добавьте его в качестве ответа. Это будет полезнодля других.)

0 голосов
/ 29 марта 2012

Вы пробовали использовать статический конструктор, а не статический метод?

что-то вроде

static MyClass()
{
  // setup windsor
  WindsorContainer windsorContainer = new WindsorContainer();
  ..

}

Кто-то уже обсуждал, что именно вы пытаетесь достичь только с помощью StructureMap - должно быть легкодостаточно, чтобы поменять это для битов Виндзора ....

http://lostechies.com/jimmybogard/2008/07/30/integrating-structuremap-with-wcf/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...