2011-08-23 7 views
8

Esto me confunde un poco. Supongo que el método web seguiría las mismas reglas de autorización establecidas en el archivo web.config que la página en la que se encuentra. ¿Ejecutará primero el ciclo de vida normal de la página? En mi caso, hay una lógica extra en una página base que verifica más permisos. ¿Esta lógica se ejecutará antes de que se llame a la webmetod para evitar el acceso de los usuarios que no tienen permiso para acceder a esa página?¿Es un método web en código tan seguro como la página en la que se encuentra?

+0

¿Cómo se implementa la lógica extra? ¿En qué evento se ejecuta? – Oded

+0

Cuando dice las mismas reglas que la página en la que se encuentra, ¿quiere decir que tiene un ASMX y ASPX en la misma aplicación web, es decir, en el mismo web.config? Si llama a un ASMX en una aplicación web diferente, será diferente. – Rup

+0

La misma aplicación web. Simplemente pondría el método web en el código subyacente ya que las llamadas ajax solo vendrán de la página aspx. Soy consciente de que probablemente sería mejor usar un controlador, pero no tengo el control total sobre este proyecto, por lo que me gustaría incluir el código en la página. – Mike

Respuesta

7

Un webmethod debe ser estático y no sigue el ciclo de vida normal de ASP.NET.

En un método web, no puede acceder a la sesión o los controles en la página.

Dado que no pasará por todos los eventos, no creo que se llame su PreInit, por lo que no podrá restringir el acceso a través de eso.

1

La línea inferior es un método web que es mucho menos seguro que usar el método web tradicional de asmx. Aunque es posible que tenga el método pendiente de /default.aspx/MyWebMethod, no tomará ninguna de las formas integradas de seguridad y se puede llamar desde cualquier lugar de la aplicación.

Cuestiones relacionadas