Archives mensuelles: Mai 2011

PerformancePoint et erreur 33494

Un de mes clients, appelés aujourd'hui lorsque leur environnement PerformancePoint (dans SharePoint 2010) est tombée en panne.  Un des serveurs de la batterie app a manquer d'espace disque.  Tout en tenant compte que, le client désinstallé « trop » et le stuff PP tous cessé de fonctionner.  Divers composants WebPart montrerait « une erreur inattendue est survenue. Erreur 33494. Des détails supplémentaires ont été exploitées pour votre administrateur »:

image

J'ai regardé l'erreur et n'ai pas trouvé tout spécifique à « Erreur 33494 » mais ce forums MSDN affichage a été utile: http://social.technet.microsoft.com/forums/en-us/sharepoint2010setup/thread/E1FE189D-7F89-455D-A98B-C1A12D8626AB

J'ai trouvé ADOMD.NET ici comme un composant de SQL Server 2008 Feature Pack: http://www.microsoft.com/downloads/en/details.aspx?FamilyId=228DE03F-3B5A-428A-923F-58A033D316E1&displaylang=en

image

(Cliquez ici pour agrandir)

J'ai télécharger et installé et il fixe tout.

Je pense que c'est un genre assez excentrique d'erreur, mais si vous frapper, vous avez au moins une option.

</fin>

S'abonner à mon blog.

Me suivre sur Twitter à http://www.twitter.com/pagalvin

Lists.asmx, GetListItems et dossiers

J'ai fait quelques recherches pour quelqu'un d'aujourd'hui autour de list.asmx web service fourni dans le cadre du SharePoint 2010 (et plus tôt).  Elle a réussi à obtenir les éléments de liste dans le dossier racine (les noms des sous-dossiers), mais il n'a pas pu obtenir des éléments dans les sous-dossiers.  J'ai fait quelques recherche sur les internets, et c'est une question très commune.  Encore, Je ne pouvais pas obtenir une bonne réponse à la question simple, « Si je sais que le dossier, Comment puis-je obtenir les éléments dans le dossier?”  Pour être honnête, I Didn't try tout cela dur depuis que j'ai voulu celui-ci sur la figure sur mes propres pendant un certain temps Sourire.

Pour définir cette, J'ai créé un site nommé « Blogging scénarios » et une liste personnalisée nommée « Liste personnalisée avec Sub dossiers ».  Ensuite, j'ai créé des dossiers nommés:

  • Année 2005
  • Année 2006
  • Année 2007

J'ai ajouté quelques éléments dans le dossier « L'année 2006 ».  C'est à quoi il ressemble:

image

Mon ami n'est pas écrire du code c#, mais plutôt à l'aide de Java, Si l'enveloppe SOAP a été ce qu'elle a vraiment besoin.  Pour obtenir que, J'ai écrit un peu de jQuery et ensuite utilisé un violon pour obtenir la conversation réelle de HTTP.

Voici le jQuery pertinent (J'ai copié le code vers le bas ci-dessous si vous souhaitez copier/coller):

image

Ils première clé est d'inclure tous les deux un <queryOptions> et <QueryOptions> nœud.  La seconde clé est que les <Dossier> le noeud est une URL à laquelle le client a accès.

Il y a peut-être d'autres façons d'obtenir ce, mais cela a fonctionné ainsi pour moi lors de l'utilisation de jQuery.

Voici l'enveloppe SOAP de ce qui précède:

<soapenv:Enveloppe xmlns:soapenv =’http://schemas.xmlsoap.org/soap/envelope/’>                
  <soapenv:Corps>
    <GetListItems xmlns =’
http://schemas.Microsoft.com/SharePoint/SOAP/’>
      <nom de la liste>Liste personnalisée avec les sous répertoires</nom de la liste>
      <viewFields>  
        <ViewFields>
          <FieldRef nom =' titre’ />
          <FieldRef nom ='EncodedAbsUrl’ />
        </ViewFields>
      </viewFields>
      <queryOptions>
        <QueryOptions>
          <Dossier>
http://demoserver1/blog Liste de scénarios/listes/Custom avec Sub dossiers/année 2006</Dossier>
        </QueryOptions>
      </queryOptions>
   
</GetListItems>
  </soapenv:Corps>
</soapenv:Enveloppe>

Beaucoup d'exemples et de discussion autour de ce m'a amené à croire que tout ce dont j'ai besoin est <QueryOptions> et spécifiez un nom de dossier.  Pour moi, J'ai à la fois placez-le à l'intérieur <queryOptions> ainsi que de spécifier une URL qualifiée complète pour la <Dossier> nœud.

Voici le programme d'installation de jQuery AJAX:

$(document).prêt(fonction() {
       var soapEnv =
           "<soapenv:Enveloppe xmlns:soapenv =’http://schemas.xmlsoap.org/soap/envelope/’> \
               <soapenv:Corps> \
                    <GetListItems xmlns =’http://schemas.Microsoft.com/SharePoint/SOAP/’> \
                       <nom de la liste>Liste personnalisée avec les sous répertoires</nom de la liste> \
                       <viewFields> \
                           <ViewFields> \
                              <FieldRef nom =' titre’ /> \
                              <FieldRef nom ='EncodedAbsUrl’ /> \
                          </ViewFields> \
                       </viewFields> \
                       <queryOptions> \
                         <QueryOptions> \
                           <Dossier>http://demoserver1/Blogging Liste de scénarios/listes/Custom avec Sub dossiers/année 2006</Dossier> \
                         </QueryOptions> \
                       </queryOptions> \
                   </GetListItems> \
               </soapenv:Corps> \
           </soapenv:Enveloppe>";

</fin>

S'abonner à mon blog.

Me suivre sur Twitter à http://www.twitter.com/pagalvin

Lists.asmx, GetList et « valeur ne peut pas être null”

J'ai découvert aujourd'hui que la GetList() méthode en lists.asmx service Web doit être appelée très soigneusement ou il est enclin à lancer un mystérieux « Valeur ne peut pas être null » exception (et qui est en supposant que vous aurez passé le message d'erreur générique encore pire, "Exception de type « Microsoft.SharePoint.SoapServer.SoapServerException’ a été lancée. »)  Spécifiquement, Je trouve que vous ne peut pas fournir toute sorte de préfixe sur la méthode GetList.  L'extrait suivant de jQuery illustre le point:

image

Si vous faites cela, le service web répond avec « Valeur ne peut être null » selon cette violon-fourni la transcription HTTP:

<?XML version = "1.0" Encoding = « utf-8 »?>
  <savon:Enveloppe
     xmlns:savon ="
http://schemas.xmlsoap.org/soap/envelope/"    
     xmlns:xsi = "
http://www.w3.org/2001/XMLSchema-instance
     xmlns:xsd ="
http://www.w3.org/2001/XMLSchema">

  <savon:Corps>
    <savon:Faute>
      <FaultCode>savon:Serveur</FaultCode>
      <FaultString>
        Exception de type « Microsoft.SharePoint.SoapServer.SoapServerException’ a été levée.
      </FaultString>
      <détail>
        <ErrorString xmlns ="
http://schemas.Microsoft.com/SharePoint/SOAP/">
Valeur ne peut pas être null.
        </ErrorString>
      </détail>
    </savon:Faute>
  </savon:Corps>
</savon:Enveloppe>

Bien sûr, vous ne serait pas probablement ajouter ce préfixe « s0 » sur votre propre, mais certains outils ont tendance à le faire (comme Eclipse).

C'est d'autant plus déroutant / frustrant parce que les autres méthodes de tolèrent les préfixes.  Par exemple, le GetListCollection méthode n'est pas l'esprit si elle est été préfixé, même avec les préfixes absurdes comme « xyzzy »:

image

Cette « valeur ne peut pas être null » semble assez commun avec lists.asmx donc j'espère que cela aidera quelqu'un sortir à l'avenir.

</fin>

S'abonner à mon blog.

Me suivre sur Twitter à http://www.twitter.com/pagalvin

Sans cesse de nidification <Div> Étiquettes et jQuery

Cela semble un tel sujet d'excentrique, Je ne suis pas sûr que c'est vraiment utile sur les blogs, mais qui a jamais cessé de me avant, donc ici, nous allons Sourire

Je travaille un projet où je suis tirer certaines données de recherche, emballage il dans un message XML, puis que XML est finalement transformé en HTML via XSLT.  Il y a beaucoup de jQuery, un bit qui implémente certaines fonctionnalités de tabulation.  Lorsque vous cliquez sur un onglet (vraiment, un <Div>), jQuery appelle .hide() et .show() sur divers divs (le chargement de la page initiale télécharge tout le contenu, il n'y a aucune publication dans ce cas).

Un tas de jours ago, l'onglet logique de commutation a commencé à se comporter de façon erratique et il ne serait pas montrer un de mes onglets.  J'ai finalement suivi il vers le fait qu'internet explorer (au moins) estime que la <Div> balises imbriquées loin, beaucoup plus profond que prévu.La barre d'outils développeur montrerait:

-<div id = « Tab1Content »>
  -<Div>
    -<Div>
      -<div id = « Tab2Content »>
        -<Div>
           …………………………
                   </Div>  <— montrant Enfin il fut fermé jusqu'ici!

Si, Si j'ai fait un $(« # Tab1Content »).cacher(), Tab2 serait également masquer et je ne pourrais jamais montrer Tab2 si je n'a pas montrer aussi Tab1.  J'ai copié et collé le code dans visual studio et il a montré de doublure de la div pied joliment, tout comme ils étaient censés faire, qui ressemble à ceci:

-<div id = « Tab1Content »>
  +<Div>
  +<Div>
-<div id = « Tab2Content »>
  +<Div>
  +<Div>

Je bat ma tête contre le mur pendant un certain temps et a remarqué que dans le réel HTML code générait beaucoup de vide <Div> balises, comme:

<corps>

  <div id = « Tab1Content »>

    <div id = « row1 » />
    <div id = « row2 » />

  </Div>

  <div id = « Tab2Content »>

    <div id = « row1 » />
    <div id = « row2 » />

  </Div>

</corps>

(Ce qui précède est waaaaaaaaaaaay trop simplifié.  Les balises div vide sont totalement valides. Certains de mes <Div> balises étaient pleins de contenu, mais beaucoup d'autres ne le sont pas.  Je suis arrivé à la prise de conscience que mon <XSL:pour chaque> les directives ont été émettant la forme abrégée des balises div quand le xsl:n'a pas pour chaque « trouver toutes les données.  J'ai forcé un commentaire HTML dans la sortie, comme le montre:

image

 

Après que je le faisais, la div alignés parfaitement et mon onglet basculement a commencé à travailler.

Comme toujours, J'espère que cela aide quelqu'un dans une pincée.

</fin>

S'abonner à mon blog.

Me suivre sur Twitter à http://www.twitter.com/pagalvin

Quick Fix: « Le nom de type de contenu » ressources$:ReportServerResources … ne peut pas contenir … caractères spéciaux”

J'ai été passé quelque temps nettoyer un SharePoint 2010 site et l'une des questions de nettoyage se rapporte à un corrompu / incorrectement installé SQL Server rapport Services question.  La question s'est posée quand un de mes collègues a tenté d'enregistrer un site comme un modèle et ensuite créer créer un nouveau site basé sur ce modèle.  L'enregistrement opération fonctionnait bien, mais lorsqu'elle a essayé de créer le nouveau site, SharePoint affiche le message d'erreur suivant:

Erreur

Le nom de type de contenu » ressources $:ReportServerResources,DataSourceContentTypeName;' ne peut pas contenir: \ / : * ? “ # % < > { } | ~ & , deux périodes consécutives de (..), ou des caractères spéciaux, comme un onglet.

Voici une casquette d'écran:

 

image

J'avait un regard sur les types de contenu dans le site et a jugé que cette:

image

Ces types de contenu sont clairement malsains.

Cette question semble arriver beaucoup sur les Internets et il ne semble pas être un simple consensus sur la façon de le résoudre.  J'ai trouvé un tableau pratique qui a cartographié les noms de type de contenu mauvais noms de type de contenu bon ici: http://social.technet.microsoft.com/Forums/en-ZA/sharepoint2010programming/thread/cb03e866-8184-4943-acfe-cafffa1b8b7a.  Je mis à manuellement jour leur donc:

image

(BrightStarr le nom est évidemment facultative, mais il ne peut pas blesser Sourire )

Cela m'a permis de créer un nouveau modèle et n'a pas casser quoi que ce soit sur les autres sites, y compris quelques trucs de PerformancePoint Server qu'un groupe différent de personnes y travaillaient.  Ensuite, j'ai pu créer un nouveau site sur le modèle.  Succès!

Je ne suis pas sûr que c'est un 100% solution, mais il m'a et toutes les personnes impliquées passé cela ennuyeux d'erreur.  Si je trouve quelque chose de nouveau, Je posterai une mise à jour.  Ma nervosité provient du fait que ces noms ne devrait pas être mauvais en premier lieu et en fixant le nom d'affichage, Je ne suis pas toucher le nom interne. 

</fin>

S'abonner à mon blog.

Me suivre sur Twitter à http://www.twitter.com/pagalvin

Une Cause pour « le créateur de cette faille ne précise pas une raison.”

J'ai fait beaucoup de travail avec SharePoint recherche dernièrement et plus particulièrement la classe KeywordQuery, propriétés et méthodes.

Si vous souhaitez que le jeu de résultats à retourner des résultats au-delà d'usual suspects (voir ici), vous ajouter à la collection SelectedProperties, comme dans:

myKeywordQuery.SelectProperties.Add(« xyzzy »);

Merci beaucoup et un truc du chapeau à Corey Roth et ce billet de blog extrêmement utile (http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/2008/02/19/how-to-use-the-moss-enterprise-search-keywordquery-class.aspx)

Dans mon cas, « xyzzy » n'est pas réellement une propriété gérée.  Lorsque j'ai ajouté à SelectedProperties de toute façon, SharePoint a jeté un de mes favoris toujours des exceptions runtime:

« Le créateur de cette faille ne précise pas une raison. »

J'aime particulièrement la capitale « R » dans la raison.  Cela sonne pour moi comme la.NET équivalent de »Je n'ai aucune bouche, et je dois crier.”

</fin>

S'abonner à mon blog.

Me suivre sur Twitter à http://www.twitter.com/pagalvin

Référence pratique: Par défaut résultats de la recherche KeywordQuery

Lorsque vous invoquez l'Execute() méthode sur un KeywordQuery, vous pouvez créer un ResultTable basé sur ResultType.RelevantResults.  Cet extrait de code illustre ce que je veux dire:

ResultTableCollection resultsTableCollection = myKeywordQuery.Execute();

ResultTable searchResultsTable = resultsTableCollection[ResultType.RelevantResults];

La table résultante aura les colonnes suivantes de l'information: 

WorkId
Grade
Titre
Auteur
Taille
Chemin d'accès
Description
Écriture
Nom du site
CollapsingStatus
HitHighlightedSummary
HitHighlightedProperties
ContentClass
IsDocument
PictureThumbnailURL
ServerRedirectedURL

J'ai cette liste dérivé un SharePoint 2010 environnement, Enterprise edition.  J'espère que ce sera utile à quelqu'un à l'avenir.

</fin>

S'abonner à mon blog.

Me suivre sur Twitter à http://www.twitter.com/pagalvin

Une des raisons pour: « Impossible d'extraire le fichier cab de la solution”

Alors qu'il travaillait sur un composant WebPart de visual studio de projet aujourd'hui, J'ai fait une re-org mineur de certains fichiers à mettre dans le dossier _layouts dans le cadre du processus de déploiement. Spécifiquement, J'ai renommé un fichier .js de « TypeAhead.js » de TypeAhead"(vieux).js »  J'ai l'intention de l'enlever dès que son successeur, « TypeAhead.js » s'avère correcte.  Il ressemblait à ceci:

image

Cela a immédiatement provoqué un problème avec visual studio lorsque j'ai essayé de déployer le projet:

Erreur s'est produite à l'étape de déploiement « Ajouter une Solution »: Ne pas extraire le fichier cab de la solution.

Il s'avère que vous ne devez pas mettre une parenthèse dans les noms de fichier.  J'ai enlevé les parens et qui a résolu le problème.

</fin>

S'abonner à mon blog.

Me suivre sur Twitter à http://www.twitter.com/pagalvin