我的WCF服务出现问题。我需要在pre application_start之前做一个windsor容器注入,并注意到我可以使用AppInitialise方法。它适用于visual studio调试,但是当我部署到IIS时,代码不会被触发..我按如下方式初始化了类
public static class Class1
{
public static void AppInitialize()
{
IWindsorContainer container;
container = new WindsorContainer("windsor.xml");
container.AddFacility<WcfFacility>();
container.Resolve<ProfileLookUpService>();
}
}
我是否需要执行任何特殊任务才能使其在IIS上运行。我正在使用第6版。
谢谢!
答案 0 :(得分:4)
嗯,你需要注意几件事:
WCF服务可以自托管 - 它并不总是托管在IIS中,所以如果可能的话,不要依赖IIS特定的机制
服务器端的WCF服务基本上由ServiceHost
(或其自定义后代)组成,它初始化WCF运行时,并根据需要创建服务类实例来处理请求
所以这真的取决于你想要注入你的东西 - 我的直觉是告诉我你可能对创建自定义ServiceHost后代的能力感兴趣,并挂钩它的一些方法和事件来处理你的初始化
在这里查看一些非常好的文章和博客文章:
答案 1 :(得分:-1)
如果在部署服务器启动时未调用AppInitialize(),则很可能您尚未在该服务器上启用WCF Non-Http激活。
转到控制台&gt;节目和特征&gt;打开或关闭Windows功能,然后查找“Microsoft .NET Framework 3.5.1”。 在此选项下,确保已安装Windows Communication Foundation非HTTP激活选项。