使用WCF服务挂钩到AppInitialize

时间:2010-03-25 17:21:10

标签: .net wcf initialization

我的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版。

谢谢!

2 个答案:

答案 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激活选项。