我想创建一个在启动时运行特定方法的Web服务 这是服务的界面:
namespace MyClass
{
[ServiceContract]
public interface IService
{
[OperationContract]
string getData();
}
}
并且在服务本身上我希望在服务加载(或部署到IIS)时运行特定方法(不是其中之一)。有办法吗?
答案 0 :(得分:3)
您需要清楚当WCF服务在IIS中托管时会发生什么。
因此,“服务加载”没有时间点,然后只是在内存中徘徊。当IIS启动时,“服务”不仅会被加载,而且随时都会“存在并准备就绪”......
那么你想在哪里插上?
在IIS中加载服务主机时?在这种情况下,您必须创建自己的自定义服务主机并将其注册到IIS,以便IIS使用您的自定义主机而不是WCF默认服务主机
当实例化服务类被实例化以处理请求时?然后将您的逻辑放入服务类的构造函数中 - 每次实例化服务类以处理请求时都会执行它
答案 1 :(得分:0)
虽然这可能不是你想要的,但你可以使用类的构造函数,也许:
public class Service : IService
{
public Service()
{
//code here will execute when an instance
//of this service class is instantiated
}
string getData() { ... }
}
如果你能告诉我们你想要打电话的方法,以及有关它的任何周边信息,那就更清楚了,这样你就不会得到不好的建议。具体情况很好。
答案 2 :(得分:0)
这里是我放置一些代码以便在webservice start(在VB中)获取(和缓存)数据的地方。您需要通过导航到任何有效或无效的
来触发服务Public Module WebApiConfig
Public Sub Register(ByVal config As HttpConfiguration)
'Run this method on startup to cache the addresses
Address.GetAll()
config.Routes.MapHttpRoute(
name:="DefaultApi",
routeTemplate:="api/{controller}/{id}",
defaults:=New With {.id = RouteParameter.Optional}
)
End Sub
End Module