我的目标是为我的非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#" %>
什么都没有。
(如果你在上找到了一个解决方案,请给它加一个标记作为答案。这对其他人会有帮助。)