c# - 在我的 WCF 服务启动时执行某些操作

标签 c# wcf startup

我想在我的 WCF 服务启动后立即执行一些操作。怎么做到的?

事实上,我应该每 10 分钟更新一次服务的一些变量。所以我把我的更新代码放在一个线程中。但是我不知道服务启动时如何启动这个线程(WCF 服务中有类似 Form_Load 事件的东西吗?)

最佳答案

通常没有 WCF 服务的任何部分“只是徘徊”在内存中准备做某事……WCF 不是 ASP.NET!

在 IIS 中托管时的默认设置是这样的:

  • IIS 在特定端口/URL 上监听请求 - 内存中的任何位置都没有您的 WCF 服务的任何痕迹

  • 当收到第一个请求时,IIS 将启动一个 ServiceHost - 一个可以“托管”服务的类

  • 然后该服务主机将查看请求是否传入,并根据目标 URL 决定实例化哪个服务类来处理该请求。然后创建服务类(您的服务实现)并调用和执行该服务类上的适当方法,一旦完成,服务类就会被释放

所以基本上,有两点你可以 Hook :

  1. 您可以创建自己的自定义 ServiceHost 类,它会在实例化时执行某些操作

  2. 您可以在每个服务类方法中添加一些“初始化”代码来处理您的需求

关于c# - 在我的 WCF 服务启动时执行某些操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7249330/

相关文章:

c# - nHibernate:如何映射可以是任何类型的属性?

c# - 在 WCF JSON 服务中禁用类型提示

.net - 在运行时指定 WCF 终结点的 IP 地址

wcf - ELMAH未登录WCF

c# - 在 Windows 服务中执行冗长的初始化

c# - 如何在多行TextBox上打印ping.exe的进度?

c# - 使用 MVC 托管时无法通过 AJAX 调用 WebAPI Controller

c# - 任何人都可以在没有 key 的情况下解码 JSON Web Token (JWT) 吗?

ios - 在 AppDelegate 中以编程方式设置 App 入口点

java - 通过将自己的应用程序类添加到 classes.jsa 来加速应用程序启动