martes, 14 de diciembre de 2010

Impersonalización y .net Framework .4

Sintomas:
Cuando en .net framework 4 usamos la impersonalización

Podemos recibir errores que van desde
No se puede cargar el archivo o ensamblado 'AjaxControlToolkit' ni una de sus dependencias. Acceso denegado.
hasta:
La identitad actual  (dominio\usuario) no tiene derechos de escritura en 'C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files.'
pasando por un mensaje tan significativo como
Líneas de código fuente no relevantes


Solución:
En muchos foros se recomienda darle permisos full control o lectura escritura al usuario en este directorio.
En producción (Windows server 2008 R2 con IIS7.5 yo he preferido añadir al usuario en cuestión en el grupo IIS_IUSR.
En cuanto al servidor de desarrollo sigo pegandome con ello, aunque puedo trabajar sin el impersonate.
Comentario:
Como dicen en: http://www.devjoker.com/contenidos/catss/454/Liacuteneas-de-coacutedigo-fuente-no-relevantes.aspx

"Es mejor no decir el tiempo que se pierde con estas tonterías."

martes, 30 de noviembre de 2010

La busqueda no funciona en Sharepoint Foundation (y versiones anteriores)

Sintomas:
En uno de tus sitios no funciona la busqueda y tienes un error como este:
No se puede rastrear la dirección de inicio sts4://sede.ascer.es/contentdbid={dcfdf837-58f4-432e-856f-6318f2fe8ff6}.
Contexto: aplicación 'Archivo_de_índice_de_búsqueda_en_el_servidor_de_búsqueda', catálogo 'Search'
Detalles:
Acceso denegado. Compruebe si la cuenta predeterminada de acceso al contenido tiene acceso a este repositorio, o bien agregue una regla de rastreo para rastrear este repositorio. Si el repositorio rastreado es un repositorio SharePoint, compruebe si la cuenta usada tiene permisos completos de lectura en la aplicación web de SharePoint que se está rastreando. (0x80041205)
Resolución:
Comprueba que puedes acceder al sitio en cuestión desde la maquina que lo aloja. En caso negativo es muy posible que este relacionado con la protección contra loopbak del IIS
Mira este vinculo para ver como resolverlo:
http://support.microsoft.com/kb/971382/en-us

viernes, 26 de noviembre de 2010

Visualizar mi calendario de Exchange desde Sharepoint (versiones 2010)

Problema:
Acceder a un calendario almacenado en Exchange Server (Outlook) desde SharePoint.
Solución:
Crear un calendario
Viendo el calendario ir a Calendario/Superposición de calendarios (overlay).
Añadir el calendario.
Mas detalles en:
http://office.microsoft.com/en-us/sharepoint-foundation-help/work-with-multiple-exchange-and-sharepoint-calendars-in-one-sharepoint-calendar-HA101777171.aspx
Mas problema:
Una vez hecho esto al sincronizar podemos tener dos problemas relacionados con el OWA.
a)  No se puede establecer una relación de confianza con el canal TTL /SSL (Could not establish trust relationship for the SSL/TLS secure channel with authority).
b)Para autenticarse el sitio OWA utiliza HTTP mientras que SharePoint require NTLM.
Todo esto puede estar relacionado con que publicas el OWA mediante forefront TMG con un certificado de terceros.
Lo mejor si tienes los servidores en tu red privada es que utilices la url interna.
En mi caso redirigía a la url externa por lo que tuve que usar el mandato:
set-OwaVirtualDirectory -identity "owa(Default Web Site)"  redirecttooptimalOWAServer=false
Aun así cada dos por tres cambia la url por la pública.
En cualquier caso el problema a) se resuelve configurando sharepoint para que confie en la autoridad raiz del certificado público de OWA.
Otro problema que suge es que solo ves ocupado o libre, la solución está en dar permisos al usuario por defecto para que pueda ver el asunto (los permisos los das desde Outlook o con GPOs)
A dia de hoy (Noviembre 2010) no se puede acceder a otros calendarios como pueden ser los recursos

jueves, 9 de septiembre de 2010

Get-Recipient error, controladores de dominio y Exchange

Sintomas:
La consola de Exchange 2010 da un error emergente que a su vez se refleja en el registro de aplicación con el siguiente texto.
La tarea Get-Recipient arroja una excepción de terminación en la etapa Microsoft.Exchange.Data.Directory.ADTransientException: Un error provocó un cambio en el conjunto actual de controladores de dominio.
Solución
Borrar:
C:\Users\User\AppData\Roaming\Microsoft\MMC\Exchange Management Console
Referencias:
Gracias a http://www.howexchangeworks.com/2010/06/error-caused-change-in-current-set-of.html

jueves, 2 de septiembre de 2010

Credential Manager, HP y Windows Vista.

Sintomas:
No puedes hacer login en estación hp con windows vista porque no puede conectar con Credential Manager
Solución
Creo que lo mejor es desinstalar Credential Manager.
Haces login con el asistente, deshabilitas credential manager y desinstalas credential manager.
Las mejores instrucciones en:
http://www.tomstricks.com/how-tofix-the-system-could-not-access-the-credential-manager-server-in-windows-vista/

Traduzco las instrucciones que hay en esta página dado el interés que veo despierta este post:


En la pantalla de inicio de sesión de Windows Vista, haga lo siguiente:
  • Seleccione la opción "iniciar sesión como usuario diferente"
  • Haga clic en "iniciar sesión con Wizard". Esto abrirá una nueva ventana de conexión donde usted puede especificar nombre de usuario, dominio y contraseña.
  • En la esquina inferior izquierda de la ventana hay un botón "Más" Hacer clic y marque la casilla "No iniciar sesión en Credential Manager"
  • Escribe tu nombre de usuario, contraseña y dominio en los respectivos lugares e inicia sesión.
  • Tras iniciar la sesión, desinstala Credential Manager!

martes, 31 de agosto de 2010

Determinar la versión de un assembly en el GAC

Sintoma:
En ocasiones necesitamos saber la versión de un assembly para complimentar la entrada en el web.config.
Resolución:
Hay que usar la herramienta GACUTIL
gacutil /l system.web
La herramiente la  podemos encontrar en alguna de estas ubicaciones:
  • %programfiles%\Microsoft Visual Studio .NET 2003\SDK\v1.1\Bin\gacutil.exe
  • %programfiles%\Microsoft SDKs\Windows\v6.0\Bin
  • %programfiles%\Microsoft SDKs\Windows\v6.0A\Bin
  • %windir%\Microsoft.NET\Framework\v1.0.3705
  • %windir%\Microsoft.NET\Framework\v1.1.4322
 Si os parecen muchas os diré en mi caso no estaba en ninguna de ellas sino en:
C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin
Dado que uso el .vstudio10 con .net4.
Agradecimientos:
http://blogs.iis.net/davcox/archive/2009/07/14/where-is-gacutil-exe.aspx
http://forums.asp.net/t/1077367.aspx

jueves, 15 de julio de 2010

Los proyectos en red no son de confianza para visual studio

Sintomas:
Cuando utilizas una unidad de red para almacenar tus proyectos, Visual Studio 2010 se queja al abrirlos porque las ubicaciones no son de confianza
Solución:
Hazla de confianza utilizando la utilidad CASPOL.EXE en una ventana de la línea de comandos abierta como Admininstrador
Sintaxis:
caspol -m -ag 1.2 -url urlname FullTrust
Ejemplo:
Ejecutando:
caspol -m -ag 1.2 -url \\servidor\recurso\proyectos\* FullTrust
Autorizaras todos los proyectos aalmacenados almacenados por debajo del directorio proyectos.
Mas información:
¿Donde está CASPOL?
CASPOL se encuentra en los directorios de las distintas versiones del framework:
C:\Windows\Microsoft.NET\Framework\vN.n.xxxxx
Y he usado la del 4.0
C:\Windows\Microsoft.NET\Framework\v4.0.30319
¿Por qué no usar Mscorcfg.msc? ¿Donde está Mscorcfg.msc?
Era lo habitual hasta la versión 2, pero desde entonces han dejado de distribuirlo con las versiones del framework posteriores, aunque se instalaba con Visual Studio.
Ahora con la versión 4.0 del framework incluso dicen que no está soportado, y ya no lo incluyencon Visual Studio 2010. Y solo queda usar CASPOL

lunes, 12 de julio de 2010

Phone manager AVAYA y problema con la "Configuración en paralelo"

Sintomas:
Al arrancar el programa PhoneManager de Avaya para IP-Office en Windows 7 recibes un error que te dice que la configuración en paralelo no es correcta y mires en el visor de eventos los detalles.
Al mirar el visor de eventos encuentras esto:
Error al generar el contexto de activación para
"C:\Program Files\Avaya\IP Office\Phone Manager\PhoneManager.exe.Manifest".
No se encontró el ensamblado dependiente Microsoft.Windows.Networking.RtcDll,language="*",processorArchitecture="X86",publicKeyToken="6595b64144ccf1df",type="win32",version="5.2.2.1".
Solución
Borra, o mejor añade una extensión bak al nombre del archivo PhoneManager.exe.manifest
Comentario:
Algún día con tiempo me dedicaré a ver el por qué y las consecuencias.

jueves, 24 de junio de 2010

datagridviewcheckboxcell y value que no cambia

Sintomas:
No se refleja los cambios realizado por el usuario cuando en el código vas a comprobar el valor de una columna checkbox en un datagridview.
Solución:
Cambiar el valor a mano con el evento on clic
Private Sub dgvListaActivos_CellMouseClick(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellMouseEventArgs) Handles dgvListaActivos.CellMouseClick

If e.Button = MouseButtons.Left And e.ColumnIndex = 1 Then
    dgvListaActivos.Rows(e.RowIndex).Cells(1).Value = Not CType(dgvListaActivos.Rows (e.RowIndex).Cells(1).Value, Boolean)
   End If
End Sub

miércoles, 16 de junio de 2010

Servicios Web en Cumulus 8.1 de Canto (dos tips)

Sintomas
La documentación de Canto en los servicios web de su DAM Cumulus es bastante pobre y hay que adivinar bastantes cosas.
Tips
En muchos casos no basta con dar un valor,  hay que decir que lo has hecho.
Por ejemplo al crear los wsItem para el metodo updateItems no basta con especificar el id de registro también hay que decirlo en .idSpecied:
New wsItem With {.id = foto.idDamFoto, .fieldValues = wsCambios.ToArray, .idSpecified = True}
Las cosas son aún mas complicadas cuando hablamos de los valores de campos, y especialmente en los de fecha que usa el valor long de Java (basado en el origen Unix de las fechas):

Public Function valorCpo(ByVal nombre As String, ByVal valor As String) As wsFieldValue
'Strings
Return New wsFieldValue With {.guid = guidsAsset(nombre), .stringValue = valor, .dataType = 0, .valueInterpretation = 0}
End Function
Public Function valorCpo(ByVal nombre As String, ByVal valor As Boolean) As wsFieldValue
'Booleanos
Return New wsFieldValue With {.guid = guidsAsset(nombre), .booleanValue = IIf(valor, 1, 0), .dataType = 1, .valueInterpretation = 0, .booleanValueSpecified = True}
End Function


Public Function valorCpo(ByVal nombre As String, ByVal valor As Date) As wsFieldValue
'fechas
Dim origen = New DateTime(1970, 1, 1, 2, 0, 0)
Dim fecha = New DateTime(valor.Year, valor.Month, valor.Day, valor.Hour, valor.Minute, valor.Second)
Dim calculoBinary As Long = (fecha.ToBinary - origen.ToBinary) * (10 ^ -4)
Return New wsFieldValue With {.guid = guidsAsset(nombre), .longValue = calculoBinary, .dataType = 4, .valueInterpretation = 0, .longValueSpecified = True}
End Function

Public Function valorCpo(ByVal nombre As String, ByVal valor As wsAssignedCategory()) As wsFieldValue
'Categoria
Return New wsFieldValue With {.guid = guidsAsset(nombre), .categories = valor, .dataType = -1, .dataTypeSpecified = True}
End Function


Public Function valorCpo(ByVal nombre As String, ByVal valor As Integer) As wsFieldValue
'valor de una lista de strings
Dim campoLista() As wsStringListValue = {New wsStringListValue With {.id = valor, .idSpecified = True}}
Return New wsFieldValue With {.guid = guidsAsset(nombre), .stringListValue = campoLista}
End Function


Y para terminar cuando hagamos el update y queramos saber si ha habido un error o no debemos consultar el status de la respuesta: 0 es correcto y 1 es error. Por ejemplo:

Public Sub TrasladaCambios(ByVal cambios() As wsItem)
Dim retorno() As wsResultStatus = serDam.updateItems(ConexDam, TablaActivos, cambios, "es")
For Each res As wsResultStatus In retorno
      If res.status <> 0 Then Err.Raise(vbObjectError + 1000, "Error actualizando DAM")
Next
End Sub

lunes, 14 de junio de 2010

IIS7.5, aplicaciones,net y System.Security.SecurityException

Sintomas:
Al migrar aplicaciones .NET que funcionaban bajo IIS6 obtienes errores del tipo:
"System.Security.SecurityException: Error de solicitud de permiso de tipo 'System.Web.AspNetHostingPermission, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'
Solución:
Cambia el pool de la aplicación el usuario de ApplicationpPoolIdentity a NetworkService.
Comentario:
Probablemente no es una solución optima en seguridad y algún día estudiaré algo mejor

miércoles, 9 de junio de 2010

Exchange 2010 backup no borra transaction logs

Sintomas
La copia de seguridad de exchange 2010 no borra los transactions logs, y el volumén que los contiene se llena.
Contexto
La hacemos según instrucciones en technet con imagenes VSS de los volumenes donde residen la base de datos y los registro de transacciones. De paso añadimos la copia de system state.
Solución
Quitar la copia del system state de esta tarea de backup y dejar solo los volumenes.
Comentario
Las instrucciones no dicen nada de la copia de system state, pero deberían porque provoca un error que impede el borrado posterior de los transactions logs.

lunes, 31 de mayo de 2010

Google maps todavía se está cargando

Sintomas
Cuando se accede a Google Maps se recibe el mensaje Todavía se está cargando... ¿Tarda mucho? Utiliza la guía de solución de problemas o el HTML básico.
Contexto
Red con acceso a Internet mediante MS Forefront TMG.
En el registro de Forefront se recibe el error:
Intento de conexión erróneo CORTAFUEGOS 31/05/2010 16:00:27
Tipo de registro: Proxy web (directo)
Estado: 12004 Error de software en una aplicación de extensión de Windows para Internet necesaria para realizar esta operación.
...
Petición: GET http://72.14.235.104/intl/es_es/mapfiles/242c/maps2/main.js
Solución
En forefront/sistema/filtros de acceso web desactivar:
Filtro de contenido comprimido para almacenar en caché

martes, 25 de mayo de 2010

Adelantos de una hora en Sony Ericsson XPeria X2

Síntomas:

En los teléfonos Sony Ericsson XPeria X2 , la hora de las citas se adelanta una hora.

Solución:

Cambiar la hora de visita y poner otra región, y luego volver a ajustar la hora de casa y después de un reinicio se quedó funcionando normal, a ver si tienes suerte.a

Comentarios:

Existen otros problemas relacionados con la hora  con la misma solución.


Coincido con la opinión:

De todas formas, dice muy poco en favor de sony el haber lanzado un terminal, que no es de los más baratos precisamente, con esta cantidad de fallos en cosas tan básicas y aun encima retrasarse con la actualización.

lunes, 26 de abril de 2010

Copias sombra y limpiar solución

Sintomas:
Al ir a depurar una aplicación ASP.NET en Visual Studio 2008 aparece el error:
No se puede crear ni realizar copias sombra de.. "nombre de tu aplicación".
Solución rápida:
Botón derecho en la solución, elegir limpiar solución.
Comentarios:
Esto quita los archivos temporales de la aplicación en el GAC

miércoles, 31 de marzo de 2010

Problema al arrancar y parar servicios desde codigo vb.net en Windows 2008R2 y 7

Sintomas:

Una aplicación VB.NET que arrancaba y paraba servicios sin problemas, deja de hacerlo al instalar en Windows server 2008 R2 o Windows 7

Solución rápida:

En propiedades del ejecutable, compatibilidad marcarla como administrador.

Comentario:

El problema es si la aplicación la utilizan usuarios que no pueden ejecutar como administradores.

En este caso creo que usar algún tipo de comunicación con el servicio.

martes, 23 de marzo de 2010

Traducir el nombre de las carpetas por defecto en Exchange 2010

Síntomas:
En Outlook o Outlook Web Acesss...etc los nombres de carpetas "clásicas" como Bandeja de entrada, elementos enviados,... etc aparecen en inglés: inbox, sent items,...etc.
La causa:
En nuestro caso cuando empezamos a utilizar los servidores de correo exchange 4.0 no existían versiones castellanas y algunos valores por defecto se conservan.
La solución:
En el acceso web: https://www.servidor.com/owa/
Ir a las opciones (arriba derecha)
Luego a Configuración (panel izquierdo)
Ahora a Regional (barra de iconos superior panel derecho)
Cambiar Idioma al español de España
Marcar la casilla "Cambie el nombre de las carpetas predeterminadas para que coincidan con el idioma especificado" (aparece cuando cambiáis el idioma)
Cliquear en guardar.
¡Aleeehop!!!!
Comentario:
Existen otras soluciones algunas historicas como usar scripts con acceso a Outlook, switches en el arranque de Outlook o incluso con cmdLets de PowerShell Exchange. Pero esta es la mas comoda, mas que nada porque todas las soluciones requieren login de usuario y el login de OWA en el explorador es el mas comodo de hacer.