C#如何初始化WebService

时间:2009-08-25 14:29:29

标签: c# .net web-services initialization

是否有可能初始化WebService。

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

5 个答案:

答案 0 :(得分:18)

如果在第一次给定客户端连接到Web服务时需要“初始化”

使用Initialise方法返回一个令牌,例如GUID,然后在对Web服务的实际“工作”方法进行的每次调用中都需要这样做。然后,您可以确保该客户端始终初始化服务。

如果您在第一次调用Web服务时需要

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

如果您在第一次通话时需要它,因为IIS上次回收/启动了应用程序池

为类创建一个静态构造函数,以便在第一次实例化静态构造函数时运行并执行初始化。

答案 1 :(得分:5)

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

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

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

答案 2 :(得分:4)

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

答案 3 :(得分:0)

嗯,如果你正在追求的话,那就没有与J2EE初始化相当的了......但是每个Web应用程序都托管在一个应用程序域中。偶尔可以回收一个应用程序并创建一个新的应用程序域......

答案 4 :(得分:0)

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