none
关于WCF 服务端的构造函数? RRS feed

  • 问题

  • 我想写一个wcf服务,有一个非常耗时的操作、但仅需执行一次即可

    我希望在wcf服务开启的时候处理一下这个非常耗时的操作,以后调用wcf服务的方法的时候就不用还要做这些操作
    在wcf里应该怎么写呢
    2011年11月8日 12:06

答案

  • 如果你是使用ServiceHost启动WCF服务的,那么在 WCFService.Open(); 方法前启动做这个操作。

    如果你是附加在IIS上的SVC服务,那么你只能在第一次调用服务的时间,启动一个线程去执行耗时的操作。

     

    2011年11月9日 1:27
  • 你可以自己写一个继承于ServiceHost的类YourServiceHost,然后如果你需要是服务开启之前做那个操作的可以在YourServiceHost中override OnOpening方法,如果你需要开启之后做那个操作的可以在YourServiceHost中override OnOpened方法。开启服务的时候使用YourServiceHost而不是用ServiceHost即可。

    如果你是在Host在IIS中的话需要再写一个继承ServiceHostFactory的类YourServiceHostFactory,然后override CreateServiceHost方法,返回之前的YourServiceHost即可,当然还需要在.svc文件中指定Factory=namespace.YourServiceHostFactory


    AndersTan
    2011年11月9日 1:56

全部回复

  • 如果你是使用ServiceHost启动WCF服务的,那么在 WCFService.Open(); 方法前启动做这个操作。

    如果你是附加在IIS上的SVC服务,那么你只能在第一次调用服务的时间,启动一个线程去执行耗时的操作。

     

    2011年11月9日 1:27
  • 你可以自己写一个继承于ServiceHost的类YourServiceHost,然后如果你需要是服务开启之前做那个操作的可以在YourServiceHost中override OnOpening方法,如果你需要开启之后做那个操作的可以在YourServiceHost中override OnOpened方法。开启服务的时候使用YourServiceHost而不是用ServiceHost即可。

    如果你是在Host在IIS中的话需要再写一个继承ServiceHostFactory的类YourServiceHostFactory,然后override CreateServiceHost方法,返回之前的YourServiceHost即可,当然还需要在.svc文件中指定Factory=namespace.YourServiceHostFactory


    AndersTan
    2011年11月9日 1:56