我的目标是为我的非http WCF服务注册一个Windsor容器。但是,我似乎无法确定将代码注册和初始化容器的位置。
我试过放......
Factory="Castle.Facilities.WcfIntegration.DefaultServiceHostFactory, Castle.Facilities.WcfIntegration"
...在我的.svc文件中的ServiceHost声明中,但是这似乎不会导致我的Global.asax.cs中的Application_Start()方法被触发。
我也尝试在类中放入一个静态方法,如下所示......
public static void AppInitialize()
{
}
...但是这种方法也不会触发。
从Castle Windsor收到的方法是......
内核为空,你忘了打电话了 DefaultServiceHostFactory.RegisterContainer()?
我真的可以使用代码一个示例来准确显示注册容器的位置。另外我在哪里处理容器。
感谢。
答案 0 :(得分:1)
这不是AppInitialize问题。你应该确保做的事情是将Castle.Facilities.WcfIntegration.WcfFacility添加到你的容器中:
container.AddFacility<Castle.Facilities.WcfIntegration.WcfFacility>();
添加完毕后,所有内容都可以正常工作而不会出现此异常。
答案 1 :(得分:0)
您是否尝试过静态构造函数而不是静态方法?
类似
static MyClass()
{
// setup windsor
WindsorContainer windsorContainer = new WindsorContainer();
..
}
有人已经准确地讨论了你想要用StructureMap实现的目标 - 应该很容易换掉那些用于温莎位......
http://lostechies.com/jimmybogard/2008/07/30/integrating-structuremap-with-wcf/
答案 2 :(得分:0)
我知道这是在前一段时间被问过的,但这里有一些你可能想要检查的陷阱。
可以通过右键单击项目并查找应用程序全局文件来添加Global.asax。确保.asax文件包含
<%@ Application Codebehind="Global.asax.cs" Inherits="YourNamespace.Global" Language="C#" %>
,别无其他。
(如果您在上面找到了解决方案,请添加一个标记作为答案。这对其他人有帮助。)