archivos mensuales: Febrero 2008

Anuncio público menor: Configuración de seguridad directo de Windows y contratantes propietarios de espacio

Recibir un puñado de mensajes de personas mediante el built-in "enviar un mensaje" función de Microsoft proporciona espacios vivos (que también alberga a mi blog) cada mes.

Alrededor de un tercio del tiempo, los usuarios han asegurado su cuenta espacios vivos que yo no puedo responder. Se trata de algún tipo de característica de anti-spam que supongo.

</final>

Explicación simple: “Valor no caen dentro del rango esperado.”

ACTUALIZACIÓN: Un cartel anónimo dejó un gran comentario sobre los nombres de internos. Asegúrese de leer.

Cuando se trabaja con receptores de eventos y otro código que hace referencia a elementos de la lista de SharePoint mediante el modelo de objetos, A menudo hacer errores que generan este error en tiempo de ejecución:

Error al cargar y ejecutar receptor de eventos Conchango.xyzzyEventReceiver en xyzzy, Versión = 1.0.0.0, Cultura = neutral, PublicKeyToken = 0dc50a750396c3ac. Información adicional está por debajo de. : Valor no cae dentro del rango esperado.

Creo que esto es un error bastante genérico que es potencialmente formas diferentes. Sin embargo, una explicación simple es que yo estoy haciendo referencia a un campo incorrectamente. Si el nombre del campo "Fecha de vencimiento", Yo debo referencia como esta en un receptor de eventos:

propiedades.ListItem["Fecha de vencimiento"]

Cuando escribe incorrectamente o utilizar el caso equivocado al hacer referencia a la esfera, SharePoint genera el anteriormente mencionado error de tiempo de ejecución. Por ejemplo, Esto no es correcto:

propiedades.ListItem["fecha de vencimiento"]

</final>

Suscribirse a mi blog.

Etiquetas de Technorati:

Punta rápido de usuario final: Vistas de ordenar en una biblioteca de documentos, Lista, etc..

Podemos, debe y crear muchos puntos de vista en las listas de SharePoint (bibliotecas de documentos, listas personalizadas, etc.). SharePoint siempre listas de vistas disponibles en orden alfabético. No podemos cambiar este uso de la funcionalidad. Si se puede hacer a través de la personalización (y no estoy seguro de que puede), es demasiado técnico para el usuario final típico.

Si desea controlar el orden en que SharePoint muestra vistas disponibles, simplemente anteponer un número o una carta a nombre de la vista, como en:

1 – Por tipo de Material
2 – Todos los documentos
3 – Fecha de vencimiento

-o-

A – Por tipo de Material
B – Todos los documentos
C – Fecha de vencimiento

También he creado vistas cuya finalidad es estrictamente alimentar un KPI. Yo he estado siguiendo esta Convención de nomenclatura:

Z_KPI_[Descripción]

Eso hace que mi "KPI" vistas al aparecer en la parte inferior de la lista.

</final>

Suscribirse a mi blog.

Etiquetas de Technorati: ,

Domingo divertido: “Cuando era un niño pequeño”

Como padre de familia, en algún lugar a lo largo de la línea descubrí la "cuando era un niño pequeño" truco.

Mi hijo, probablemente cuatro o cinco en el momento, estaba jugando un globo y como los niños más pequeños que jugar con globos, él apareció. Él estaba muy molesto. El mundo había llegado a su fin. Yo le dije, "cuando era niño, Tuve un balón y extrae y eventualmente, Tengo un globo nuevo." Parecía que le ayudara a hacer frente a su pérdida y condujo a un divertido hablar de lo que era cuando era un niño.

Que así como una técnica de consuelo y lo utilizó varias veces durante el siguiente período de tiempo. Tener problemas una vez cuando su ranchero del monstruo 3 criatura murió. Hablé acerca de cómo mi perro, Príncipe, había muerto en un accidente de coche. A esta hora, su respuesta fue, "Ahora me siento malas unos dos cosas!" Eludido usando la "cuando era un niño" técnica para consuelo después de.

Antes del incidente del perro muerto, Sin embargo, También había comenzado a utilizar la técnica para convencerlo de hacer las tareas. "Cuando era un niño pequeño, Tuve que salir y conseguir el periódico", "limpiar mi habitación", "mamá de obtener su taza de café", etc..

Esto también fue bastante exitosa por un tiempo, pero él comenzó a rebelarse contra la tiranía de mi infancia cada vez más. Un evento, en particular, marcó el final. Le dije a traer la basura de banqueta regreso al garaje. Sostuvo y me respondió, "Cuando era un niño pequeño, Tuve que llevar la basura al garaje." Él respondió, "Oh yeah! Así cuando eras un niño, fue estúpido!".

</final>

Suscribirse a mi blog.

Etiquetas de Technorati:

No se podrá fijar columnas en listas y bibliotecas de documentos y vistas

ACTUALIZACIÓN (02/29/08): Este nuevo proyecto de codeplex parece proporcionar un método para proteger columnas individuales: http://www.codeplex.com/SPListDisplaySetting. Si usted tiene alguna experiencia trabajando con él, por favor dejar un comentario.

Carteles del Foro preguntan frecuentemente como este: "Tengo una visión responsable y y una visión personal de una lista. Cómo segura la vista manager para que el personal no puede utilizar?"

También con frecuencia piden una pregunta relacionada: "Quiero asegurar una columna de metadatos específicos para que sólo los administradores pueden editar esa columna, mientras que otros no pueden verlo."

Estas respuestas se aplican a ambos WSS 3.0 y MOSS:

  • SharePoint no proporciona soporte de out-of-box para asegurar views.
  • SharePoint no proporciona soporte de out-of-box para columnas seguridad.

Hay varias técnicas uno pueden seguir para resolver este tipo de requisitos de seguridad. Aquí es lo que puedo pensar:

  • Utilizar seguridad a nivel de elemento de fuera de la caja. Vistas siempre honran a configuración de seguridad de nivel de elemento. Receptores de eventos y flujo de trabajo puede automatizar la asignación de seguridad.
  • Utilizar vistas personales para "el privilegio" Vistas. Estos son fáciles de configurar. Sin embargo, debido a su personal"" naturaleza, Estos deben ser configurados para cada usuario. Configuración de seguridad estándar de uso para evitar que nadie crear un punto de vista personal.
  • Usar un elemento web vista de datos e implementar algún tipo de solución de recorte de seguridad AJAXy.
  • Rodar su propia funcionalidad de visualización de la lista e incorporar el recorte de seguridad a nivel de columna.
  • Modificar los formularios de entrada de datos y utilizar JavaScript junto con el modelo de seguridad para aplicar el recorte de seguridad de nivel de la columna.
  • Utilizar un formulario de InfoPath para entrada de datos. Aplicar recorte de seguridad de nivel de columna mediante llamadas a servicios web de SharePoint y condicionalmente ocultar campos según sea necesario.
  • Rollo de su propia función de entrada de datos ASP.NET que implementa el recorte de seguridad a nivel de columna.

Ninguna de esas opciones son realmente tan bueno, pero hay al menos un camino a seguir si necesita, Aunque es difícil.

NOTA: Si vas por ninguno de estos caminos, no se olvide "acciones-> Abrir con explorador de Windows". Usted quiere estar seguro de que pruebas con esa característica para asegurarse de que no funciona como una "puerta trasera" y derrotar a su esquema de seguridad.

Si usted tiene otras ideas o experiencias con columnas o puntos de vista de la seguridad, por favor Enviarme un correo electrónico o deja un comentario y actualizaremos esta contabilización según corresponda.

</final>

Suscribirse a mi blog.

Etiquetas de Technorati:

Punta rápido: Números de versión de ADF BDC son tu amigo

Si usted está codificación manual ADF archivos y haciendo un montón de ciclos de prueba de importación de código, Utilice el número de versión para hacer su vida más fácil.

Detesto admitirlo, pero hasta esta semana, Siempre fui borrando el ADF y vuelva a importarlo. Esto romper mis columnas de datos de negocio y me hacen volver a alambre les. Todo innecesario.

Este fichero bajo «es obvio una vez que ves».

Ejemplo:

<LobSystem
xmlns:XSi="http://www.w3.org/2001/XMLSchema-instance" XSi:schemaLocation="http://schemas.Microsoft.com/Office/2006/03/BusinessDataCatalog BDCMetadata.xsd" Tipo="WebService" Versión="1.2.0.0" Nombre="xyzzyDocumentReview" xmlns="http://schemas.Microsoft.com/Office/2006/03/BusinessDataCatalog">

Cambiar esa versión y volver a importar y la columna de datos de negocios existente utiliza la versión actualizada automáticamente con ninguna configuración adicional requerida.

</final>

Suscribirse a mi blog.

Etiquetas de Technorati:

Solución: Selector de BDC muestra sólo una columna de resultados

En mis intentos de ir proporcionando un columna de búsqueda más útil usar BDC, Golpeo una pared con el selector de BDC. Si no lo has hecho ver, el selector de BDC es similar a un selector de personas salvo que funciona con las columnas de tipo "datos de negocio".

Acceder al selector de haciendo clic en el icono de libro abierto de una columna de datos de negocios como se muestra:

imagen

La imagen de arriba muestra una columna de datos de negocio llamada "Id del documento maestro". La columna está conectada, a través de BDC, a un servicio web. El servicio web devuelve dos columnas de información: Título e identificación de documento. El propósito de negocio aquí es proporcionar una "este documento se basa en" función. Los usuarios seleccionar a un maestro"" documento y cuando guarde, un receptor de eventos copia los campos de datos meta del patrón de referenciado.

De forma predeterminada, el selector de BDC este aspecto cuando busco un documento cuyo ID = "38":

clip_image002

Es útil, pero no lo suficientemente bueno. Gente no piensa en términos de identificaciones, piensan en términos de títulos y otros meta datos. El selector le permite buscar en otras columnas (por ejemplo:. Título) pero no mostrar la lista actual de títulos que se encuentra, sólo su DocId de como se muestra a continuación:

clip_image002[1]

(La captura de pantalla no es tan grande porque yo no elegir una búsqueda que devuelve los resultados válidos, pero se puede ver si habían encontrado algunos resultados, sólo habría mostrado de DocId, no títulos).

He buscado en alta y baja para la respuesta a esto y no se pudo. Mi colega, el venerable Jonathan Bradshaw, había enfrentado y resuelto este problema. Cuando llegó a él por ayuda, me señaló en la dirección correcta.

Configurar el selector para mostrar varias columnas a través de la ShowInPicker"" propiedad en el ADF:

<Propiedad Nombre="ShowInPicker" Tipo="Systems.Boolean">verdadero</Propiedad>

Con más detalle:

  <!-- Título -->
  <TypeDescriptor TypeName="System.String" Nombre="Título" >
    <LocalizedDisplayNames>
      <LocalizedDisplayName LCID="1033">Título</LocalizedDisplayName>
    </LocalizedDisplayNames>
    <Propiedades>
      <Propiedad Nombre="DisplayByDefault" Tipo="Systems.Boolean">verdadero</Propiedad>
      <Propiedad Nombre="ShowInPicker" Tipo="Systems.Boolean">verdadero</Propiedad>
    </Propiedades>
  </TypeDescriptor>

Al establecer esta propiedad introducir un problema menor. Tan pronto como se establece una vez, es necesario establecer para cada columna que desee mostrar. En mi caso, Selector de BDC demostrada DocId por defecto. Sin embargo, una vez que se ha agregado "ShowInPicker" a título, DocId ya no muestran. Resolví estableciendo explícitamente la propiedad ShowInPicker para ID Doc.

Aquí está el resultado:

imagen

(Voy a explicar la extraña "168 – CamlSchema.xsd" construcción en un futuro blog. En pocas palabras, es una cadena concatenada que permite una experiencia de usuario ligeramente mejor).

Claro, Después de haber escrito esta entrada de blog, Acabo de hacer una búsqueda de "ShowInPicker" y encontró numerosos éxitos, incluyendo este: http://msdn2.microsoft.com/en-us/library/ms583986.aspx. Explica el significado de esa propiedad junto con algunas otras cosas buenas de la BDC.

</final>

Suscribirse a mi blog!

Etiquetas de Technorati:

Rápido & Fácil: Crear una carpeta y asignar a un tipo de contenido (O, Tienen los KPI y comen demasiado)

Con el fin de solucionar un problema KPI Escribí acerca de aquí, Hice algunas pruebas y descubrió el trabajo de ésa KPI contra carpetas con meta datos de la misma manera que trabajan contra los documentos o elementos de la lista. Probado creando un nuevo tipo de contenido basado en el tipo de contenido de carpeta y luego añade unos cuantos campos. He creado algunos indicadores y demostrado a mí mismo que KPI funciona como se esperaba. Esto fue noticia. No es perfecto, porque obtener el desglose de los KPI contra las carpetas no es exactamente lo que usted quiere. Esto no es demasiado inconveniente en mi caso porque 1) No sabía lo que los usuarios finales y 2) el desglose va a una carpeta. Haga clic en el nombre de carpeta y en el artículo. Es un par de clics en lugar de una, que no es el fin del mundo.

Esto fluyó muy bien con el trabajo que estaba haciendo. Estoy creando una carpeta para cada documento que llega cargado. Esto se hace vía un receptor de eventos. Como un resultado, es un pedazo de pastel para mantener el carpeta primaria meta datos en sincronía con los basada en KPI meta datos del archivo sí mismo desde la plomería ya está en marcha. This allows me to have my KPI’s and eat them too 🙂

He modificado el receptor de eventos para agregar la carpeta y luego establece el tipo de contenido de esta carpeta nueva para mi tipo de contenido personalizado Este KPI. Este pedacito de código hizo el truco:

 SPFolderCollection srcFolders = targetWeb.GetFolder("Documentos").Subcarpetas;
  SPFolder addedFolder = srcFolders.Add(propiedades.ListItem.ID.ToString());
  SPContentTypeId kpiCT = Nuevo SPContentTypeId("0x0120002A666CAA9176DC4AA8CBAA9DC6B4039F");
  addedFolder.Item["ID de tipo de contenido"] = kpiCT;
  addedFolder.Item.Update();

Para localizar el ID de tipo de contenido actual, I acceder a ese tipo de contenido mediante la configuración del sitio y copiar/pegar desde la URL como se muestra:

imagen

</final>

Suscribirse a mi blog!

Etiquetas de Technorati: ,

Fácil y rápida: Obtener la SPFolder de un SPListItem en un receptor de eventos

Detesto admitirlo, Pero luché con este otro día. Mi receptor de evento necesita actualizar un campo de su carpeta principal. Poco muestra cómo hacerlo:

privada void UpdateParentFolder(SPItemEventProperties propiedades)
{

SPFolder thisItemFolder = properties.ListItem.File.ParentFolder;
thisItemFolder.Item["Estado de aprobación de ZZ"] = "Buenas noticias, todo el mundo!";
thisItemFolder.Item.Update();


} // UpdateParentFolder

En este caso, Estoy trabajando con una biblioteca de documentos y las propiedades están viniendo de un evento ItemAdded.

El truco es que no se puede obtener la SPFolder del tema directamente desde el propio elemento (i.e. Propiedades.ListItem.Folder es null). En su lugar, ir a archivo asociado del elemento de la lista y conseguir la carpeta del archivo.

</final>

Suscribirse a mi blog!

Etiquetas de Technorati:

Sin embargo otro receptor de eventos depurar truco

Estoy seguro de que no soy la primera persona para llegar a esto. Sin embargo, No he notado que alguien publique un truco como esta desde que empecé prestando mucha atención a la comunidad en julio pasado. Por lo tanto, Pensé que sería publicarlo esta sugerencia de depuración rápida y fácil.

Estoy trabajando en un receptor de eventos que comenzaron a generar este error en la 12 colmena:

Error al cargar y ejecutar receptor de eventos Conchango.xyzzyEventReceiver en xyzzy, Versión = 1.0.0.0, Cultura = neutral, PublicKeyToken = blahbalhbalh. Información adicional está por debajo de. : Referencia a objeto no establecida como instancia de un objeto.

No sabía donde había introducido este fallo porque había hecho muchas cosas en uno de mis ciclos código/desplegar/test.

He intentado Esta solución para obtener mi pdb allí con la esperanza de SharePoint 12 colmena mostraría el seguimiento de pila, Pero no hubo suerte. No sé si es posible y si alguien no, por favor, hágamelo saber 🙂

Sé que es posible escribir sus propios mensajes de registro a la 12 colmena. Francamente, Quería algo un poco menos miedo y más rápido implementar.

Se me ocurrió que al menos pude obtener información básica traza por captura y re-throwing genéricos excepciones como esta:

  Intente {
    UpdateEditionDate(propiedades);
  }
  capturas (Excepción e)
  {
    tiro Nuevo Excepción("Dispatcher, UpdateEditionDate(): Excepción: [" + e.ToString() + "].");
  }

Esto se presentó en el 12 colmena thusly:

Error al cargar y ejecutar receptor de eventos Conchango.xyzzyEventReceiver en xyzzy, Versión = 1.0.0.0, Cultura = neutral, PublicKeyToken = blahblahblah. Información adicional está por debajo de. : Dispatcher, UpdateEditionDate(): Excepción: [System.NullReferenceException: Referencia a objeto no establecida como instancia de un objeto. en Conchango.xyzzyManagementEventReceiver.UpdateEditionDate(Propiedades de SPItemEventProperties) en Conchango.xyzzyManagementEventReceiver.Dispatcher(Propiedades de SPItemEventProperties, Cadena eventDescription)].

Que me dio todo el detalle que necesitaba para rastrear ese problema y espero utilizarlo mucho en adelante.

</final>

Suscribirse a mi blog!