C#如何初始化WebService

是否有可能初始化WebService。

我正在搜索只在第一次调用WebService时运行的方法。 在.Net中有类似的东西吗?

继续我对你的问题的评论….

如果在给定客户端第一次连接到Web服务时需要“初始化”:有一个“Initialize”方法返回一个令牌,例如Guid,然后在每次调用实际的“工作”方法时都需要你的网络服务。 然后,您可以确保该客户端始终初始化该服务。

如果您在第一次调用Web服务时需要它:在您的服务中添加一些代码作为私有方法,在每个公共方法的顶部调用。 在其中检查是否存在某些内容,例如注册表项,文件,数据库记录或其他持久值。 如果它不存在,执行初始化然后创建“某事”。

如果你在第一次调用时需要它,因为IIS上次循环/启动了应用程序池:为类创建一个静态构造函数,以便在第一次实例化静态构造函数时运行并执行初始化。

如果您尝试初始化Web服务使用的资源,并且只想为每个应用程序初始化一次,则可以在Global.asax上使用Application_Start事件。 请注意,只要应用程序池耗尽了太多资源,IIS就会回收应用程序池。

如果需要初始化类级变量,可以在Web服务的构造函数中执行此操作。 我建议不要这样做,因为你的网络服务应该是无国籍的。 如果需要在Web服务中初始化一次静态资源,则可以使用静态构造函数。

如果您需要在整个应用程序中使用一次的单一资源,我建议您查看单例模式。

在Visual Studio中创建WebService应用程序时,默认情况下将添加名为“Service”的类。 当你查看这个类的代码(Service.cs)时,你会看到一个带有两个注释掉的行的构造函数(“public Service()”)。 您可以将初始化代码放在此处,也可以调用您在Service类中定义的私有方法。 仅当客户端首次调用Service类中的任何WebMethod时,才会调用此构造函数。

好吧,如果你正在追求的话,那就没有与J2EE初始化相当的了……但是每个Web应用程序都托管在一个应用程序域中。 可能会不时地回收应用程序并创建新的应用程序域…

您可以在global.asax中使用Application_Start,如果调用项目中的任何Web服务,它将运行一次