# Pasando el día codificando... (¡y .NET 1.0.3705.352 bug!)

<datetime class="hidden">2004-02-29T00:00</datetime>

<!-- category -- mostlylucidcouk, Imported, .NET, Database, Software Development -->
Estoy trabajando... hmm... pensé que mencionaría un bicho muy extraño que me encontré ayer en
trabajo - que me había desconcertado durante un día y medio ...

Yo había escrito una solicitud (el Portal que he mencionado antes - [Los
Comunidad de la Educación](http://www.theeducationcommunity.com)), que utiliza la [Datos
Bloque de aplicaciones de acceso](http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnbda/html/daab-rm.asp)para proporcionar el DAL - que recomiendo altamente. De todos modos,
Esto siempre ha sido impecable en cada plataforma en la que lo he probado.

```
    string user = System.Security.Principal.WindowsIdentity.GetCurrent().Name;
    string exceptionStr=exception.ToString() + exception.StackTrace;
    SqlParameter[] sqlParams = new SqlParameter[4]; SqlParameter
    prmUser = new SqlParameter("@user",SqlDbType.VarChar,500);
    prmUser.Value = user;
    SqlParameter prmMessage = new SqlParameter("@exceptionMessage",
    SqlDbType.VarChar, 2000);
    prmMessage.Value = exception.Message;
    SqlParameter prmExStr = new SqlParameter("@exception",SqlDbType.Text);
    prmExStr.Value = exceptionStr;
    SqlParameter prmPortalId = new SqlParameter("@portalId",SqlDbType.SmallInt);
    prmPortalId.Value = 0; sqlParams[0] = prmUser;
    sqlParams[1] = prmMessage;
    sqlParams[2] = prmExStr; 
    sqlParams[3] = prmPortalId;
    /*SqlHelperParameterCache.GetSpParameterSet(_connectionString,"pr_Admin_InsertError");  sqlParams[0].Value
    = user;  sqlParams[1].Value = exception.Message;  sqlParams[2].Value
    = exceptionStr;  //sqlParams[2].Value = "Test String";  sqlParams[3].Value
    = ((PortalSettings)HttpContext.Current.Items["PortalSettings"]).PortalId;*/ 
    SqlHelper.ExecuteNonQuery(_connectionString,CommandType.StoredProcedure,"pr_Admin_InsertError",sqlParams);
```

Uso un método que proporciona llamado SqlHelperParameterCache.GetSpParameters (comentario)
en el código de arriba) - esto básicamente sólo pobla una matriz de SqlParámetros con
los parámetros devueltos de la DB - guarda un poco de codificación y hace la aplicación más fácil
para actualizar a medida que los SPs cambian - agradable!

De todos modos, esto ha funcionado sin falta, rápido, eficiente todo eso! Hasta que eso es, yo
trató de desplegarse en nuestro entorno de pruebas el jueves - Seguí recibiendo varios errores,
Error grave y error de red general de vuelta desde SQL Server 2000 cuando traté de ejecutar
el código comentado arriba. Bueno, la versión de .NET en esa máquina era 1.0.3705.352

- una versión que nunca había visto y no puedo conseguir - pero asumí, .NET 1.0 era todo bonito
  mucho lo mismo, tal vez unas cuantas correcciones de errores, ¡pero eso es todo!

Umm...equivocado, resulta que esta versión tiene un problema importante cuando intentas obtener los parámetros
volver de un SP cuando el SP espera un campo tipo 'texto' - simplemente se equivoca de alguna manera

- y causa este terrible, error desconcertante. Solución, declarar explícitamente los tipos de campo
  para los parámetros si su SP contiene un campo de 'texto' (sólo uno para el que lo he probado,
  puede afectar a tipos más 'binarios').

De todos modos, arreglado ahora - pero te recomiendo actualizar a 1.1 - que también tiene un fantástico
lo que descubrí de algunos tipos blog en el [ASP.NET
weblogs](http://weblogs.asp.net) simple pero guarda un poco de escribir, parece que DropDownList (espero
RadioButtonList lo tiene también, ¡pero no lo ha probado!) que es una propiedad SelectedValue -
¿Qué tan fresco es eso - bien no tan fresco, pero es mejor que hacer el viejo ddl.SelectedItem.Value...bit
Más corto...