C#如何初始化WebService

9

有没有初始化WebService的可能性。

我正在寻找一种仅在对WebService进行首次调用时运行的方法。 在.NET中是否有类似的东西?

5个回答

17

如果您需要在客户端首次连接 Web 服务时进行“初始化”:

创建一个 Initialise 方法,返回一个标记(如 GUID),然后在调用您的 Web 服务的实际“工作”方法时需要使用该标记。这样可以确保对于该客户端,服务始终处于初始化状态。

如果您需要在第一次调用 Web 服务时进行初始化:

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

如果您需要在 IIS 上次回收/启动应用程序池后的第一次调用时初始化:

为该类创建一个静态构造函数,在首次实例化时运行该静态构造函数并执行初始化操作。


5
如果您想初始化Web服务使用的资源,并且每个应用程序只想初始化一次,可以使用Global.asax上的Application_Start事件。请注意,当应用程序池耗尽太多资源时,IIS将回收应用程序池。
如果您需要初始化类级变量,则可以在Web服务的构造函数中执行此操作。我建议不要这样做,因为您的Web服务应该是无状态的。如果需要在Web服务中一次性初始化静态资源,可以使用静态构造函数。
如果您需要一个在整个应用程序中仅可用一次的单个资源,则建议您研究Singleton模式。

4

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


0
你可以在 global.asax 中使用 Application_Start,它会在项目中的任何 Web 服务被调用时运行一次。

0

嗯,如果你想要的是J2EE初始化的等效物,那么就没有了...然而,每个Web应用程序都托管在一个应用程序域中。不时地,应用程序可能会被回收,新的应用程序域可能会被创建...


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接