Error de solicitud de permiso de tipo ‘System.Web.AspNetHostingPermission

Al trabajar en Visual Web Developer 2005 Express Edition (VWD) puedes obtener este error:

Error 18 Error de solicitud de permiso de tipo 'System.Web.AspNetHostingPermission, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'. (W:MiAplicacionweb.config line 46) W:MiAplicacionAdminDefault.aspx 3

En inglés:

Request for the permission of type 'System.Web.AspNetHostingPermission, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' failed.

Este error aparece por cada uno de los controles que existan en cada una de las páginas. Si abres el code-behind de alguna página, notarás que los controles que aparecen en el correspondiente aspx no son reconocidos, por lo que el Intellisense no funciona y programar se vuelve medio imposible.

Esta situación puede ocurrir cuando se tiene una máquina para desarrollo y un servidor en la red local. La máquina del desarrollador se usa solamente para correr VWD y en el servidor se corre el IIS y se almacena la aplicación. El desarrollador mapea una letra a un recurso compartido (share) en el servidor, de tal manera que, por ejemplo, W: mapee a servidoraplicacion.

Debido a que estamos trabajando en un recurso compartido, se muestra el error anterior por cuestiones de seguridad.

Para resolverlo se debe hacer lo siguiente:

En la máquina del desarrollador, hay que abrir la herramienta Inicio -> Panel de Control -> Herramientas Administrativas -> Configuración de Microsoft .NET Framework 2.0:

Configuración de Microsoft .NET Framework 2.0

Después se debe expander el árbol para mostrar: Console Root -> .NET Framework 2.0 Configuration -> My Computer -> Runtime Security Policy y hacer clic en la liga que dice: Adjust Zone Security:

Security Adjustment Wizard

Dejar marcada la opción Make changes to this computer y dar clic en siguiente. En la pantalla que aparece se debe seleccionar la opción Local Intranet y ajustar el selector a Full Trust:

Full Trust

Después dar clic en Next y luego en Finish.

Reinicia VWD y vuelve a compilar tu aplicación. Todo debe funcionar bien ahora. Si no funciona con Build intenta con Rebuild.

Nota importante:

He notado que en algunos casos para eliminar este error además de Local Intranet hay que seleccionar Internet y establecer el selector en Full Trust.

Formatear una fecha dentro de un GridView usando DataFormatString

Si dentro de un GridView intentas colocar una fecha, dándole formato con DataFormatString:

  1. <asp:BoundField DataField="fechareg" HeaderText="fechareg" SortExpression="fechareg" DataFormatString="{0: dd/MM/yyyy}" />

Notarás que la fecha sigue saliendo con este formato:

6/21/2007 11:49:52 PM

¿Por qué no se aplica el formato? Para prevenir ataques maliciosos, el valor del campo esta codificado, HtmlEncoded. La codificación HtmlEncoding ocurre antes de aplicarse el formato, por lo cual éste no tiene efecto.

Para solucionar el problema debes apagar la codificación para ese campo, de esta manera:

  1. <asp:BoundField DataField="fechareg" HeaderText="fechareg" SortExpression="fechareg" DataFormatString="{0: dd/MM/yyyy}" HtmlEncode="false" />

Aquí puedes encontrar información sobre el formateo de strings:

http://msdn2.microsoft.com/en-us/library/26etazsy(VS.80).aspx

Cómo obtener los elementos seleccionados de un CheckBoxList

El CheckBoxList contiene varios elementos de tipo CheckBox. Para obtener todos los valores que han sido seleccionados tenemos que iterar en su colección de ListItems.

Tenemos este control:

  1. <asp:CheckBoxList ID="c02" runat="server">
  2.     <asp:ListItem>Verde</asp:ListItem>
  3.     <asp:ListItem>Blanco</asp:ListItem>
  4.     <asp:ListItem>Rojo</asp:ListItem>
  5. </asp:CheckBoxList>

En el código siguiente guardaremos en la variable cadena02 todos los CheckBoxes que han sido seleccionados. El punto y coma es solamente para usarlo como separador.

  1. Dim elemento As ListItem
  2. Dim cadena02 As String
  3. cadena02 = ""
  4. For Each elemento In c02.Items
  5.     If elemento.Selected Then
  6.         cadena02 = cadena02 & elemento.Value & "; "
  7.     End If
  8. Next

Cómo añadir JavaScript a un post de WordPress

Si quieres añadir un código de JavaScript a un post de WordPress, no puedes teclear el script directamente en el post porque WordPress le pondrá tags p en los saltos de línea y otras cosas.

Lo que tienes que hacer es colocar el script que contiene las funciones en un archivo con extensión .js y luego usar el cargador de archivos de WordPress para subir el archivo al servidor. Después añadelo al editor, solamente para copiar la liga. Una vez que tengas la liga, puedes añadir el script así (tecléalo tal cual dentro del cuerpo del post):

<script type="text/javascript" src="https://www.miblogwordpress.com/wp-content/uploads/2007/06/MisFunciones.js"></script>

Ahora puedes usar tus funciones, tecleálas tal cual dentro del cuerpo del post, por ejemplo:

<a href="javascript:FuncionEquis('Parametro1', 'Parametro2')">Ejecuta la función mediante una liga</a>

Como centrar una tabla con hojas de estilos

Antes que nada, esta manera de centrar una tabla dentro de una página ha quedado descontinuada:

<table align="center">

Los navegadores todavía lo soportan, pero la mejor manera de centrar una tabla es con hojas de estilos (CSS).

Te habrás dado cuenta de que si usas el siguiente código:

<div style="text-align:center">
  <table border="1" width="150">
    <tr>
      <td> Hola </td>
    </tr>
  </table>
</div>

la tabla se centra, pero también se centra todo su contenido!

Centrar tablas

Bueno, la manera de resolver esto es así:

Crea esta definición en tu hoja de estilos:

.TablaPrincipal
{
    width: 150px;
    margin-left: auto;
    margin-right: auto;
}

Y ahora aplícasela a tu tabla:

<table class="TablaPrincipal">
  <tr>
    <td> Hola </td>
  </tr>
</table>

Se centra la tabla con respecto a la página, pero el texto dentro de la tabla no se centra.

Centrado de Tabla con CSS

¿Por qué?
Si te preguntas por qué ocurre esto, tendrías que referirte a esta sección de la especificación de las hojas de estilo, que dice:

If both ‘margin-left’ and ‘margin-right’ are ‘auto’, their used values are equal. This horizontally centers the element with respect to the edges of the containing block.

En español:

Si ‘margin-left’ y ‘margin-right’ se establecen a ‘auto’, los valores utilizados son iguales. Esto centra horizontalmente el elemento con respecto a los bordes del bloque contenedor.