archivos mensuales: Mayo 2011

PerformancePoint y Error 33494

Uno de mis clientes llamados hoy cuando su entorno de PerformancePoint (en SharePoint 2010) se rompieron.  Uno de los servidores de app en la granja se está agotando el espacio en disco.  Mientras que abordar, el cliente había desinstalado "demasiado" y las cosas PP todos dejó de funcionar.  Varios elementos web mostraría "producido un error inesperado. Error 33494. Detalles adicionales han sido registrados por el administrador":

image

Me buscaron el error y no encuentro nada específico de "Error 33494" pero este foros MSDN contabilización fue útil: http://social.technet.microsoft.com/forums/en-us/sharepoint2010setup/thread/E1FE189D-7F89-455D-A98B-C1A12D8626AB

Encontré ADOMD.NET aquí como un componente de SQL Server 2008 Feature Pack: http://www.microsoft.com/downloads/en/details.aspx?FamilyId=228DE03F-3B5A-428A-923F-58A033D316E1&displaylang=en

image

(Haga clic para ampliar)

Descargo e instalado y que todo arreglado.

Creo que este es un tipo bastante chiflado de error, pero si lo consigues, por lo menos tienes una opción.

</final>

Suscribirse a mi blog.

Sígueme en Twitter en http://www.twitter.com/pagalvin

Lists.asmx, GetListItems y carpetas

Estaba haciendo algunas investigaciones para alguien hoy alrededor del servicio web de list.asmx proporcionado como parte de SharePoint 2010 (y anteriores).  Ella fue capaz de obtener los elementos de lista en la carpeta raíz (incluidos los nombres de las subcarpetas), pero no se pudo obtener elementos en las subcarpetas.  Hice algunos mirando alrededor de la internets y es una cuestión sorprendentemente común.  Todavía, No podía obtener una buena respuesta a la pregunta simple, "si sé la carpeta, Cómo obtener los elementos de la carpeta?”  Para ser honesto, No intente duro todo lo que ya he quería figura esta uno fuera de mi propia durante un tiempo Sonreír.

Para configurar esto, He creado un sitio llamado "Blogging escenarios" y una lista personalizada denominada "Lista personalizada con las subcarpetas".  A continuación, crear carpetas con el nombre:

  • Año 2005
  • Año 2006
  • Año 2007

He añadido algunos elementos a la carpeta "Año 2006".  Esto es lo que parece:

image

Mi amigo no escribir código C# sino más bien mediante Java, por lo que la envoltura SOAP era lo que necesitaba realmente.  Para conseguir, Escribí un poco de jQuery y entonces utilizarse violinista para obtener la conversación real de HTTP.

Aquí es el jQuery pertinente (He copiado el código abajo a continuación si desea copiar y pegar):

image

Su primera clave es incluir tanto un <queryOptions> y <QueryOptions> nodo.  La segunda clave es que el <Carpeta> el nodo es una dirección URL a la que el cliente tiene acceso.

Puede haber otras formas de obtener esto, pero esto funcionó bien para mí cuando usando jQuery.

Aquí es la envoltura SOAP para la anterior:

<soapenv:Xmlns envolvente:soapenv =’http://schemas.xmlsoap.org/SOAP/Envelope/’>                
  <soapenv:Cuerpo>
    <GetListItems xmlns =’
http://schemas.Microsoft.com/SharePoint/SOAP/’>
      <listName>Lista personalizada con las subcarpetas</listName>
      <viewFields>  
        <ViewFields>
          <FieldRef nombre =' título’ />
          <FieldRef nombre ='EncodedAbsUrl’ />
        </ViewFields>
      </viewFields>
      <queryOptions>
        <QueryOptions>
          <Carpeta>
http://demoserver1/blogs Lista personalizada de listas de escenarios con Sub carpetas/año 2006</Carpeta>
        </QueryOptions>
      </queryOptions>
   
</GetListItems>
  </soapenv:Cuerpo>
</soapenv:Envolvente>

Un montón de ejemplos y debate en torno a esto me llevó a creer que todo lo que necesito <QueryOptions> y especifique un nombre de carpeta.  Para mí, Yo necesito a ambos envolverlo dentro <queryOptions> así como especificar una dirección URL completa de la <Carpeta> nodo.

Aquí está el programa de instalación de AJAX jQuery:

$(documento).listo(función() {
       var soapEnv =
           "<soapenv:Xmlns envolvente:soapenv =’http://schemas.xmlsoap.org/SOAP/Envelope/’> \
               <soapenv:Cuerpo> \
                    <GetListItems xmlns =’http://schemas.Microsoft.com/SharePoint/SOAP/’> \
                       <listName>Lista personalizada con las subcarpetas</listName> \
                       <viewFields> \
                           <ViewFields> \
                              <FieldRef nombre =' título’ /> \
                              <FieldRef nombre ='EncodedAbsUrl’ /> \
                          </ViewFields> \
                       </viewFields> \
                       <queryOptions> \
                         <QueryOptions> \
                           <Carpeta>http://demoserver1/Blogging Lista personalizada de listas de escenarios con Sub carpetas/año 2006</Carpeta> \
                         </QueryOptions> \
                       </queryOptions> \
                   </GetListItems> \
               </soapenv:Cuerpo> \
           </soapenv:Envolvente>";

</final>

Suscribirse a mi blog.

Sígueme en Twitter en http://www.twitter.com/pagalvin

Patrones de flujo de trabajo SPD, Consejos y trucos

Hoy di mi presentación en el Festival de SharePoint en Denver. Aquí está la misma presentación de PowerPoint: http://www.mstechblogs.com/paul/wp-content/uploads/2011/05/SharePointFest.pptx

Suscribirse a mi blog.

Sígueme en Twitter en http://www.twitter.com/pagalvin

Lists.asmx, GetList y "valor no puede ser nulo”

Hoy he descubierto que la GetList() método en lists.asmx servicio Web tiene que ser llamado muy cuidadosamente o es propenso a tirar un misterioso "Valor no puede ser nulo" excepción (y que está suponiendo que puede superar el peor mensaje de error genérico, "Excepción de tipo ' Microsoft.SharePoint.SoapServer.SoapServerException’ fue arrojado.")  Específicamente, Me encontré con que no puede ofrecer ningún tipo de prefijo en el método GetList.  El siguiente fragmento de código de jQuery ilustra el punto:

image

Si haces, el servicio web responde con "Valor no puede ser nulo" por esto violinista-proporciona la transcripción HTTP:

<?XML version = "1.0" Encoding = "utf-8"?>
  <jabón:Envolvente
     xmlns:jabón ="
http://schemas.xmlsoap.org/SOAP/Envelope/"    
     xmlns:XSi = "
http://www.w3.org/2001/XMLSchema-instance
     xmlns:XSD ="
http://www.w3.org/2001/XMLSchema">

  <jabón:Cuerpo>
    <jabón:Fallas>
      <faultcode>jabón:Servidor</faultcode>
      <FaultString>
        Excepción de tipo ' Microsoft.SharePoint.SoapServer.SoapServerException’ fue arrojado.
      </FaultString>
      <detalle>
        <ErrorString xmlns ="
http://schemas.Microsoft.com/SharePoint/SOAP/">
Valor no puede ser nulo.
        </ErrorString>
      </detalle>
    </jabón:Fallas>
  </jabón:Cuerpo>
</jabón:Envolvente>

Claro, probablemente no agregar ese prefijo "s0" sobre su propia, pero algunas herramientas son propensas a hacerlo (como Eclipse).

Esto es aún más confuso / frustrante porque otros métodos toleran prefijos.  Por ejemplo, el GetListCollection método no importa si se es prefijo, incluso con prefijos de tonterías como "xyzzy":

image

Este "valor no puede ser nulo" parece bastante común con lists.asmx así que esperemos que esto nos ayudará a alguien fuera en el futuro.

</final>

Suscribirse a mi blog.

Sígueme en Twitter en http://www.twitter.com/pagalvin

Sin cesar de anidamiento <div> Etiquetas y jQuery

Esto me parece un tema tan extraños, No estoy seguro vale blogs acerca de, pero que nunca ha dejado de mi antes, así que aquí vamos Sonreír

Estoy elaborando un proyecto donde estoy tirando de algunos datos de una búsqueda, embalaje en un mensaje XML y, a continuación, ese XML en última instancia es transformado en HTML mediante XSLT.  Hay un montón de jQuery involucrados, un bit que implementa algunas funciones de tabulación.  Cuando hace clic en una ficha (realmente, un <div>), jQuery invoca .hide() y .show() en diferentes divs (la carga de la página inicial descargas todo el contenido por lo que en este caso no hay ninguna devoluciones).

Un montón de horas hace, la ficha conmutación lógica comenzó a comportarse de manera irregular y no mostrará uno de mis fichas.  Yo finalmente seguimiento es el hecho de internet explorer (por lo menos) pensaba que el <div> etiquetas anidadas mucho, mucho más profundo que pretende.Mostrar la barra de herramientas de desarrollador:

-<div id = "Tab1Content">
  -<div>
    -<div>
      -<div id = "Tab2Content">
        -<div>
           …………………………
                   </div>  <— mostrando finalmente cerró todo el camino aquí!

Por lo tanto, si hice un $("# Tab1Content").ocultar(), También podría ocultar Tab2 y nunca pude mostrar Tab2 si también no muestro Tab1.  Copia y pega el código visual studio y mostró todos del revestimiento del div hasta bien, al igual que se suponía que iban a estar haciendo, mirando como este:

-<div id = "Tab1Content">
  +<div>
  +<div>
-<div id = "Tab2Content">
  +<div>
  +<div>

Golpearon la cabeza contra la pared durante un tiempo y notó que en el código HTML actual código estaba generando un montón de vacío <div> Etiquetas, como:

<cuerpo>

  <div id = "Tab1Content">

    <div id = "row1" />
    <div id = "row2" />

  </div>

  <div id = "Tab2Content">

    <div id = "row1" />
    <div id = "row2" />

  </div>

</cuerpo>

(Lo anterior es waaaaaaaaaaaay simplificada.  Las etiquetas div vacía son totalmente válidas. Algunos de mis <div> Etiquetas estaban llenos de contenido, pero no fueron muchos más.  Llegué a la realización que mi <XSL:para cada> directivas estaban emitiendo el formulario corto cuando las etiquetas div el xsl:no para cada ' encontrar ningún dato.  Obligó a un comentario HTML en la salida, como se muestra:

image

 

Después de hice, el div se alinearon bien y mi ficha conmutación empezó a trabajar.

Como siempre, Espero que esto ayude a alguien en una pizca.

</final>

Suscribirse a mi blog.

Sígueme en Twitter en http://www.twitter.com/pagalvin

Quick Fix: "El nombre de tipo de contenido '$ Resources:ReportServerResources … no puede contener … caracteres especiales”

Yo he sido pasar algún tiempo limpiar un SharePoint 2010 sitio y uno de los problemas de limpieza se refiere a un corrupto / incorrectamente instalado SQL Server Report Services cuestión.  El problema surgió cuando uno de mis colegas intentó guardar un sitio como plantilla y, a continuación, crear crear un nuevo sitio basado en esa plantilla.  Guardar operación funcionaba bien, pero cuando ella intentó crear el nuevo sitio, SharePoint aparece el siguiente mensaje de error:

Error

El nombre de tipo de contenido '$ Resources:ReportServerResources,DataSourceContentTypeName;' no puede contener: \ / : * ? “ # % < > { } | ~ & , dos periodos consecutivos (..), o caracteres especiales tales como una ficha.

Aquí es una tapa de pantalla:

 

image

Tuve un vistazo a los tipos de contenido en el sitio y encontré esto:

image

Los tipos de contenido son claramente insalubres.

Esta cuestión parece llegar a mucho en las Internets y no parece haber un único consenso sobre cómo resolverlo.  Encontré una tabla útil que asignan los nombres de tipo de contenido malo a nombres de buen tipo contenido aquí: http://social.technet.microsoft.com/Forums/en-ZA/sharepoint2010programming/thread/cb03e866-8184-4943-acfe-cafffa1b8b7a.  Actualiza manualmente les así:

image

(BrightStarr el nombre es evidentemente opcional, pero no te duele Sonreír )

Esto me permitió crear una nueva plantilla y no rompe nada en los otros sitios, incluyendo algunas cosas de PerformancePoint Server que estaban trabajando un grupo de personas completamente diferente.  Entonces fui capaz de crear un nuevo sitio en la plantilla.  Éxito!

No estoy seguro de que esto es un 100% solución, pero me metió y todos los involucrados pasado este molesto error.  Si encuentro algo nuevo, Voy a publicar una actualización.  Mi nerviosismo surge del hecho de que estos nombres no deben equivocarse en primer lugar y fijando el nombre para mostrar, No estoy tocando el nombre interno. 

</final>

Suscribirse a mi blog.

Sígueme en Twitter en http://www.twitter.com/pagalvin

Una causa por "el creador de este fallo no especificó una razón.”

Yo he estado haciendo un montón de trabajo con SharePoint search últimamente y específicamente en la clase de KeywordQuery, propiedades y métodos.

Si desea que el conjunto de resultados a devolver resultados más allá de los sospechosos habituales (ver aquí), se agrega a la colección de SelectedProperties, como en:

myKeywordQuery.SelectProperties.Add("xyzzy");

Muchas gracias y una punta del sombrero a Corey Roth y Esta entrada de blog enormemente útil (http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/2008/02/19/how-to-use-the-moss-enterprise-search-keywordquery-class.aspx)

En mi caso, "xyzzy" no es realmente una propiedad administrada.  Cuando agregado a SelectedProperties de todas formas, SharePoint tiró uno de mi favorito nunca excepciones de tiempo de ejecución:

"El creador de este fallo no especificó una razón".

Me gusta especialmente la capital "R" en la razón.  Esto me suena como el.NET equivalente de"No tengo ninguna boca, y yo debo gritar.”

</final>

Suscribirse a mi blog.

Sígueme en Twitter en http://www.twitter.com/pagalvin

Referencia práctica: Resultados predeterminados de búsqueda KeywordQuery

Cuando se invoca la ejecución() método en un KeywordQuery, puede crear un ResultTable basado en ResultType.RelevantResults.  Este fragmento de código ilustra lo que quiero decir:

ResultTableCollection resultsTableCollection = myKeywordQuery.Execute();

ResultTable searchResultsTable = resultsTableCollection[ResultType.RelevantResults];

La tabla resultante tendrá las siguientes columnas de información: 

WorkId
Rango
Título
Autor
Tamaño
Ruta de acceso
Descripción
Escribir
SiteName
CollapsingStatus
HitHighlightedSummary
HitHighlightedProperties
ContentClass
IsDocument
PictureThumbnailURL
ServerRedirectedURL

Deriva esta lista un SharePoint 2010 medio ambiente, Enterprise edition.  Esperemos que será útil a alguien en el futuro.

</final>

Suscribirse a mi blog.

Sígueme en Twitter en http://www.twitter.com/pagalvin

Uno de los motivos: "Error al extraer el archivo cab en la solución”

Mientras trabajaba en un elemento web de visual studio proyecto hoy, Hice una re-org menor de algunos archivos para poner en la carpeta _layouts como parte del proceso de implementación. Específicamente, Nombre un archivo .js desde "TypeAhead.js" "TypeAhead(antigua).JS"  Plan de quitarla tan pronto como su sucesor "TypeAhead.js" resulta correcto.  Esto parecía:

image

Esto causó inmediatamente un problema con visual studio cuando trató de implementar el proyecto:

Error en el paso de implementación Agregar solución: Error al extraer el archivo cab en la solución.

Resulta que no debería poner un paréntesis en nombres de archivo.  Me quitaron el paréntesis y que resolvió el problema.

</final>

Suscribirse a mi blog.

Sígueme en Twitter en http://www.twitter.com/pagalvin