2009-08-25 25 views
8

Existe la posibilidad de inicializar un WebService.C# Cómo inicializar WebService

Estoy buscando un método que se ejecute solo durante la primera llamada a WebService. ¿Hay algo así en .Net?

+5

¿Quiere decir que la primera vez que un determinado "cliente" llama al servicio web dentro de una sesión, la primera ¿Cuándo se llama el servicio web, o la primera vez que se llama desde que IIS recicló/inició por última vez el grupo de aplicaciones? – Rob

Respuesta

17

A raíz de mi comentario sobre tu pregunta ....

Si necesita "inicialización" la primera vez que un cliente determinado se conecta al servicio Web: tener un método "inicializar" que devuelve un token, como un Guid, que se requiere en cada llamada realizada al método real de "realiza el trabajo" de su servicio web. Luego puede asegurarse de que para ese cliente el servicio siempre se inicialice.

Si lo requiere la primera vez que el servicio web es cada vez llama: añadir algo de código a su servicio, como un método privado, que se llama en la parte superior de cada método público. Dentro de él, compruebe la existencia de algo, como una entrada de registro, archivo, registro de base de datos u otro valor persistente. Si no existe, realice su inicialización y luego cree el "algo".

Si lo requiere en la primera llamada desde IIS última reciclado/Iniciado el grupo de aplicaciones: tener un constructor estático para la clase de manera que cuando se crea una instancia primero se ejecuta el constructor estático y realiza su inicialización.

0

Bueno, no hay equivalente a la inicialización J2EE si eso es lo que está buscando ... Sin embargo, cada aplicación web está alojada en un dominio de aplicación. De vez en cuando una aplicación se pueden reciclar y un nuevo dominio de aplicación se pueden crear ...

4

Cuando se crea una aplicación de servicio Web en Visual Studio, por defecto se añadirá una clase llamada "Servicio". Cuando mires el código para esta clase (Service.cs), verás un constructor ("public service()") con dos líneas comentadas. Puede colocar aquí su código de inicialización o llamar a un método privado que haya definido dentro de la clase de servicio. Se llamará a este constructor solo cuando su cliente haga su primera llamada a cualquier WebMethod en la clase de servicio.

5

Si usted está tratando de inicializar un recurso que se utiliza por el servicio web y sólo desea inicializar una vez por aplicación, se puede utilizar el evento Application_Start en el Global.asax. Tenga en cuenta que IIS reciclará el grupo de aplicaciones siempre que el grupo de aplicaciones consuma demasiados recursos.

Si necesita inicializar la variable de nivel de clase, puede hacerlo en el constructor del servicio web. Recomendaría contra eso, porque su servicio web debería ser sin estado. Si necesita inicializar un recurso estático una vez en su servicio web, puede usar un constructor estático.

Si necesita un solo recurso que esté disponible una vez en su aplicación, le recomiendo que busque en el patrón singleton.

0

Puede utilizar Application_Start en global.asax, se ejecutará una vez si los hay servicio web dentro de su proyecto se llama