Social Icons

jueves, 18 de diciembre de 2008

HRESULT: 0x80070094 ¿Pero de qué te quejas ahora SharePoint?

En mi caso SharePoint daba este error al intentar crear una nueva aplicación web. Nada, nada, tranquilididad. Se trata de el servicio de administración de IIS no está funcionando como Dios manda. Para comprobar que se trata de esto nos vamos a Inicio --> Herramientas administrativas --> Administración de Internet Information Services (IIS) y vemos que no rula.


Solución: Rápido y veloz nos vamos a Ejecutas: services.msc y buscamos el servicio llamado "Servicio de administración IIS" pulsamos reiniciar, aceptar y listo.


Si esto no funciona podemos reiniciar el server completo, y si eso tampoco surte efecto dicen que hay un hotfix de Microsoft que se encarga del tema. A mi me bastó con el reinicio del servicio. Al final tuve que resetear todos los web front end :(


Por cierto, si alguien me ha echado de menos es que he estado malito con conjuntivitis.

Publicar un comentario

martes, 9 de diciembre de 2008

Al fin aprendo a hacer RunWithElevatedPrivileges sin -2130575251

Para el que sepa es muy sencillo, y posiblemente ya todo el mundo sepa, pero yo me acabo de enterar hoy. Se acabó la tiranía de las impersonaciones con administradores.

El secreto es abrir el SPWeb con los privilegios elevados y con el AllowUnsafeUpdates=true, por supuesto, luego hay que cerrarlo todo y guardarlo en su cajita, para cuando nos vuelva a hacer falta, más o menos así:

private static void CreaNuevoDocumento()



{



SPWeb sCurrentElevatedWeb = null;



SPSite sElevatedSite = null;



SPListItem sNuevoItem = null;



SPSecurity.RunWithElevatedPrivileges(







delegate()



{

sElevatedSite =
new SPSite(SPControl.GetContextSite(Context).ID);

sCurrentElevatedWeb = sElevatedSite.OpenWeb();

});





sCurrentElevatedWeb.AllowUnsafeUpdates =
true;

sNuevoItem = CreateTempFile(sCurrentElevatedWeb);





sNuevoItem[
"Source"] = "Privilegios Elevados";

sNuevoItem[
"Id"] = "-1";

sNuevoItem.Update();





sCurrentElevatedWeb.AllowUnsafeUpdates =
false;

sCurrentElevatedWeb.Dispose();

sElevatedSite.Dispose();

}

Quiero hacer hicapié en que mientras menos cosas hagamos dentro del delegate menos posibilidades tendremos de que se queje con el rollo del ERROR CODE -2130575251, por ejemplo los SPListItem.Update(). El secreto es crear los objetos Elevados y cerrar el delegate para luego usarlos fuera.

¿Por qué? y ¿por qué no?

Publicar un comentario

jueves, 4 de diciembre de 2008

AllowPartiallyTrustedCallersAttribute, y otra vez descolocao

Si al cargar un webpart en una página de SharePoint te dice:

"Los ensamblados que implementan elementos Web de ASP.NET y que están instalados en una ubicación de confianza parcial, como el directorio de la Papelera de reciclaje, deben compilarse con AllowPartiallyTrustedCallersAttribute establecido para que la importación se realice correctamente"

¿A quién se le ocurre instalar ensamblados en la papelera de reciclaje, por Dios?

No padezcas, simplemente pon:

[assembly:System.Security.AllowPartiallyTrustedCallers()]

Encima del namespace y santas pascuas.

¿Alguien instala cosas en la papelera de reciclaje? No se de qué me quejo, para una vez en la vida que el literal del error no es "ERROR".

Publicar un comentario

Directiva de administración de la información: Caducidad

Hay veces que, dada su naturaleza, los elementos de una biblioteca son candidatos a ser desechados cuando tienen una antigüedad determinada.

SharePoint contempla añadir caducidad a los elementos de listas o bibliotecas a partir de los valores de un metadato tipo fecha del mismo y como es muy fácil hacerlo os contaré cómo.

Voy a elegir una biblioteca de documentos porque SharePoint te permite tomar como referencia para la caducidad la fecha de creación del documento se ve que "alguien" consideró que no tenía sentido tomar como referencia la fecha de creación de un elemento de lista. En el caso de usar un elemento de lista tendremos que usar un campo fecha que creemos nosotros, por ejemplo un campo Fecha de Creación que tome por defecto la fecha del día.

Bueno, a lo que vamos.

Nos dirigimos a la biblioteca de documentos en cuestión y nos vamos a "Configuración" y a "Configuración de Biblioteca de documentos". Una vez allí pulsamos en "Configuración de la directiva de administración de la información" un nombre cortito para que sea fácil de recordar.

Configuración de la directiva de administración de la información

Allí pulsamos "Definir una directiva" y "Aceptar" y en el menú que nos aparece seleccionamos "Habilitar Caducidad":

Habilitar Caducidad

Una vez allí seleccionamos "Período de tiempo basado en las propiedades del elemento" y el campo (Por ejemplo "Creado" o "Modificado"), el tiempo de caducidad y también seleccionamos "Realizar esta acción" y luego elegimos una de entre la lista de acciones (Por ejemplo "Eliminar" o "Eliminar").

Luego pulsamos "Aceptar" y listo.

¿No se han dado cuenta los muchachos de Microsoft de que la longitud del nombre "directivas de administración de la información" es inadecuada para un título? Si me hubieran encargado a mi la tarea de nombrarlo hubiese elegido algo como "Directivas de Administración de la Información de Elementos que Pueden Ser o No Documentos y Que Se Encuentran Contenidos en Bibliotecas o Listas de SharePoint Según su Idiosincrasia".

Publicar un comentario