WCF Windsor容器注册



我的目标是为我的非http WCF服务注册一个Windsor容器。然而,我似乎不知道把代码放在哪里注册和初始化容器。

我试着把。。。

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

到.svc文件中的ServiceHost声明中,但是这似乎不会导致我的Global.asax.cs中的Application_Start()方法启动。

我还尝试在类中放入一个静态方法,如下所示。。。

public static void AppInitialize()
{
}

然而,这种方法也不会着火。

从温莎城堡收到的方法是…

内核为空,你忘了调用吗DefaultServiceHostFactory.RegisterContainer()?

我真的可以用一个代码来做一个示例,它准确地显示了在哪里注册容器。此外,我在哪里处理容器。

谢谢。

这不是AppInitialize问题。您应该确保将Castle.Facilities.WcfIntegration.WcfFacility添加到您的容器中:

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

一旦添加了它,所有操作都应该正常,不会出现此异常。

  • 杰森

您尝试过静态构造函数而不是静态方法吗?

类似的东西

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

有人确切地讨论了你只想用StructureMap实现什么——应该很容易把它换成Windsor的部分。。。。

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

我知道不久前有人问过这个问题,但这里有几个陷阱你可能想检查一下。

  • 您的Global.asax和Global.asax.cs文件是否正确?您的Global.asax是否指向正确的codeehind文件
  • 受保护的void Application_Start(object sender,EventArgs e)方法的签名是否正确
  • 如果你不在其中添加任何温莎城堡特定的代码,你能让Application_Start()启动吗

可以通过右键单击项目并找到应用程序全局文件来添加Global.asax。确保.asax文件包括

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

什么都没有。

(如果你在上找到了一个解决方案,请给它加一个标记作为答案。这对其他人会有帮助。)

最新更新