2010-03-25 90 views
6

我遇到了我的WCF服务问题。我需要在application_start之前做一个windsor容器注入,并且注意到我可以使用AppInitialise方法。它适用于Visual Studio的调试,但是当我部署到IIS的代码不会被解雇。我初始化类,如下所示与WCF服务挂钩AppInitialize

public static class Class1 
{ 
    public static void AppInitialize() 
    { 
     IWindsorContainer container; 
     container = new WindsorContainer("windsor.xml"); 
     container.AddFacility<WcfFacility>(); 
     container.Resolve<ProfileLookUpService>(); 
    } 
} 

,有什么特别的任务,我需要做的就是这个在IIS上工作。我正在使用版本6.

谢谢!

回答

4

那么,你需要的几件事情需要注意:

  • WCF服务可能是自托管的 - 它并不总是在IIS托管,所以不依赖于特定的IIS的机制,如果有的话可能

  • 在服务器端的WCF服务基本上是由一个ServiceHost(或其定制的后裔),初始化WCF运行时,并根据需要来处理请求,将创建服务类实例

所以它真的取决于你想注入你的东西的位置 - 我的直觉告诉我你可能对创建一个自定义的ServiceHost后裔感兴趣,并且钩住它的一些方法和事件来处理你的初始化。

退房的话题在这里一些非常好的文章和博客文章:

+0

如果我希望(WCF服务)在WCF服务启动时与主机建立持久套接字连接,那么您可以建议/建议如何做到这一点?正如你在答案中提到的那样,我们不应该依赖IIS特定的机制。 – FaizanRabbani 2016-04-25 07:34:47

-1

如果AppInitialize()未在部署服务器启动时调用,那么很有可能您没有在该服务器上启用WCF非Http激活。

转至控制面板>程序和功能>打开或关闭Windows功能,然后查找“Microsoft .NET Framework 3.5.1”。 在此选项下,确保已安装Windows Communication Foundation非HTTP激活选项。