【问题标题】:C# How to initialize WebServiceC#如何初始化WebService
【发布时间】:2009-08-25 14:29:28
【问题描述】:

是否有可能初始化 WebService。

我正在寻找一种仅在第一次调用 WebService 期间运行的方法。 .Net 中有类似的东西吗?

【问题讨论】:

    标签: c# .net web-services initialization


    【解决方案1】:

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

    有一个 Initialise 方法返回一个令牌,例如一个 GUID,然后每次调用你的 Web 服务的实际“工作”方法时都需要这个方法。然后,您可以确保始终为该客户端初始化服务。

    如果您在第一次调用网络服务时需要它

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

    如果您在 IIS 上次回收/启动应用程序池后的第一次调用中需要它

    有一个类的静态构造函数,这样当它第一次实例化时,静态构造函数就会运行并执行你的初始化。

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          【解决方案4】:

          好吧,如果您要这样做的话,没有与 J2EE 初始化等效的东西……但是,每个 Web 应用程序都托管在一个应用程序域中。有时可能会回收应用程序并创建新的应用程序域...

          【讨论】:

            【解决方案5】:

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

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2017-03-24
              • 2020-02-08
              • 1970-01-01
              • 2021-03-23
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多