Hace un par de días comenté el efecto de ejecución doble de ItemCreated que se podía dar al enlazar ciertos DataGrids en una página Web. Una forma posible e evitarlo (entre otras muchas) sería redefinir el evento LoadViewState de la página para marcar con un indicador booleano cuándo se está ejecutando, una cosa así:
private boolean RestaurandoViewState = false;protected override void LoadViewState(object savedState) { this.RestaurandoViewState = true; base.LoadViewState(savedState); this.RestaurandoViewState = false;}
De este modo durante el evento ItemCreated sólo tenemos que comprobar si se está restaurando el ViewState o no, ejecutando el código sólo en caso de que no.
Hoy he leído este truco de Enrico Sabbadin en la página de .NET2TheMax y me ha parecido muy interesante...
Se trata de ejecutar una aplicación (o parte de ella) dentro de un dominio restringido de forma que se ejecute con bajos privilegios de seguridad (lo que se suele llamar un patio de juegos o sandbox). Esto puede ser interesante en diversas situaciones.
La técnica consiste, grosso modo, en crear un nuevo dominio de aplicaicón (AppDomain) y asignarle una política de seguridad que se carga desde un archivo en disco. Posteriormente se carga el ensamblado a ejecutar con bajo privilegio mediante una llamada a ExecuteAssembly. Interesante....