Månadsarkiv: Maj 2011

PerformancePoint och fel 33494

En av mina klienter som kallas idag när omgivningen PerformancePoint (i SharePoint 2010) bröt.  En av app servrar i gruppen ont om diskutrymme.  Samtidigt som, klienten avinstallerat "too much" och PP grejer alla slutat fungera.  Olika webbdelar skulle visa "ett oväntat fel uppstod. Fel 33494. Ytterligare detaljer har loggats för administratören":

image

Jag tittade upp felet och hittade inte något specifikt för "Fel 33494" men denna MSDN: S forum bokföring var användbar: http://social.technet.microsoft.com/forums/en-us/sharepoint2010setup/thread/E1FE189D-7F89-455D-A98B-C1A12D8626AB

Jag hittade ADOMD.NET här som en komponent i SQL Server 2008 Funktionspaket: http://www.microsoft.com/downloads/en/details.aspx?FamilyId=228DE03F-3B5A-428A-923F-58A033D316E1&displaylang=en

image

(Klicka för att förstora)

Jag hämtar och installerat som och det fasta allt.

Jag tror att detta är ett ganska oddball slags fel, men om du träffar det, du du ha minst ett alternativ.

</slutet>

Prenumerera på min blogg.

Följ mig på Twitter vid http://www.twitter.com/pagalvin

Lists.asmx, GetListItems och mappar

Jag gjorde lite forskning för någon dag runt webbtjänsten list.asmx som ingår i SharePoint 2010 (och tidigare).  Hon kunde få listobjekten i rotmappen (inklusive namnen på undermappar), men det gick inte att hämta objekt i undermappar.  Jag gjorde några titta på Internet och det är en förvånansvärt gemensamma fråga.  Ännu, Jag kunde inte få ett bra svar på den enkla frågan, "om jag vet att mappen, Hur skaffar jag objekten i mappen?”  Att vara ärlig, Jag försöker inte allt hårt eftersom jag har ville bild man ut på min egen ett tag Leende.

Att ställa in här, Jag har skapat en webbplats med namnet "Blogga Scenarios" och en anpassad lista med namnet "Anpassad lista med Sub mappar".  Mappar med följande namn skapas:

  • År 2005
  • År 2006
  • År 2007

Jag lade till ett par artiklar till mappen "År 2006".  Det är vad det ser ut:

image

Min vän inte skriva C#-kod utan snarare använda Java, SOAP-kuvertet var alltså det hon verkligen behövs.  Att få som, Jag skrev en bit av jQuery och sedan används Spelman för att få http-samtalet.

Här är den relevanta jQuery (Jag kopierade koden anges nedan om du vill kopiera och klistra in):

image

De första nyckeln är omfatta både en <queryOptions> och <QueryOptions> nod.  Den andra nyckeln är att den <Mappen> noden är en URL-adress som klienten har tillgång.

Det kan finnas andra sätt att få detta, men detta fungerat bra för mig när du använder jQuery.

Här är SOAP-kuvertet för ovanstående:

<soapenv:Kuvert xmlns:soapenv =’http://schemas.xmlsoap.org/soap/envelope/’>                
  <soapenv:Organ>
    <GetListItems xmlns =’
http://schemas.microsoft.com/SharePoint/SOAP/’>
      <Listnamn>Anpassad lista med undermappar</Listnamn>
      <viewFields>  
        <ViewFields>
          <FieldRef namn = "titel’ />
          <FieldRef namn ='EncodedAbsUrl’ />
        </ViewFields>
      </viewFields>
      <queryOptions>
        <QueryOptions>
          <Mappen>
http://demoserver1/Blogging Scenarier/listor/Custom lista med Sub mappar/år 2006</Mappen>
        </QueryOptions>
      </queryOptions>
   
</GetListItems>
  </soapenv:Organ>
</soapenv:Kuvert>

En hel del exempel och diskussion kring detta ledde mig att tro att allt jag behöver var <QueryOptions> och ange ett mappnamn.  För mig, Jag behöver både radbryta det inuti <queryOptions> samt ange en fullständig URL för den <Mappen> nod.

Här är jQuery AJAX installationsprogrammet:

$(dokument).redo(funktionen() {
       var soapEnv =
           "<soapenv:Kuvert xmlns:soapenv =’http://schemas.xmlsoap.org/soap/envelope/’> \
               <soapenv:Organ> \
                    <GetListItems xmlns =’http://schemas.microsoft.com/SharePoint/SOAP/’> \
                       <Listnamn>Anpassad lista med undermappar</Listnamn> \
                       <viewFields> \
                           <ViewFields> \
                              <FieldRef namn = "titel’ /> \
                              <FieldRef namn ='EncodedAbsUrl’ /> \
                          </ViewFields> \
                       </viewFields> \
                       <queryOptions> \
                         <QueryOptions> \
                           <Mappen>http://demoserver1/Blogging Scenarier/listor/Custom lista med Sub mappar/år 2006</Mappen> \
                         </QueryOptions> \
                       </queryOptions> \
                   </GetListItems> \
               </soapenv:Organ> \
           </soapenv:Kuvert>";

</slutet>

Prenumerera på min blogg.

Följ mig på Twitter vid http://www.twitter.com/pagalvin

Lists.asmx, GetList och "värde kan inte vara null”

Jag upptäckte idag att GetList() metod i lists.asmx webbtjänsten har att kallas mycket noggrant eller den är benägna att kasta en mystisk "Värdet får inte vara null" undantag (och som förutsatt att du kan komma förbi ännu värre allmänna felmeddelande, "-Undantag av typ" Microsoft.SharePoint.SoapServer.SoapServerException’ kastades.")  Särskilt, Jag tyckte att du inte kan tillhandahålla någon form av prefixet på metoden GetList.  Följande jQuery utdrag illustrerar punkten:

image

Om du gör det, webbtjänsten svarar med "Värdet får inte vara null" visas enligt detta Spelman-enligt HTTP avskrift:

<?XML-version = "1.0" Encoding = "utf-8"?>
  <tvål:Kuvert
     xmlns:SOAP ="
http://schemas.xmlsoap.org/soap/envelope/"    
     xmlns:xsi = "
http://www.w3.org/2001/XMLSchema-instance
     xmlns:XSD ="
http://www.w3.org/2001/XMLSchema">

  <tvål:Organ>
    <tvål:Fel>
      <faultcode>tvål:Servern</faultcode>
      <faultstring>
        -Undantag av typ "Microsoft.SharePoint.SoapServer.SoapServerException’ kastades.
      </faultstring>
      <detalj>
        <ErrorString xmlns ="
http://schemas.microsoft.com/SharePoint/SOAP/">
Värdet får inte vara null.
        </ErrorString>
      </detalj>
    </tvål:Fel>
  </tvål:Organ>
</tvål:Kuvert>

Självklart, du skulle inte förmodligen till att "s0" prefix på egen, men vissa verktyg är benägna att göra det. (som Eclipse).

Detta är desto mer förvirrande / frustrerande eftersom andra metoder tolerera prefix.  Till exempel, den GetListCollection metoden hänsyn inte till om det är förutfastställt, även med nonsens prefix som "xyzzy":

image

Detta "värdet inte får vara null" verkar ganska vanligt med lists.asmx så förhoppningsvis detta kommer att hjälpa någon i framtiden.

</slutet>

Prenumerera på min blogg.

Följ mig på Twitter vid http://www.twitter.com/pagalvin

Oändligt kapsla <div> Märken och jQuery

Detta verkar vara sådan en oddball-avsnittet, Jag är inte säker på att det verkligen är värt att blogga om, men det har aldrig hindrat mig innan, Så här går vi Leende

Jag arbetar med ett projekt där jag dra vissa data från en sökning, förpackning till ett XML-meddelande och sedan att XML till slut förvandlas till HTML via XSLT.  Det finns mycket av jQuery, en bit som implementerar tabbing funktionalitet.  När du klickar på en flik (Verkligen, en <div>), jQuery anropar .hide() och .show() på olika Divar (första sidan laddar hämtningar allt innehåll så det finns ingen postbacks i detta fall).

Ett gäng timmar sedan, fliken växling logik började bete sig underligt och det skulle inte visar en av Mina flikar.  Jag slutligen spårade det till faktum att internet explorer (minst) trodde att det <div> Märken som kapslade långt, mycket djupare än avsett.Verktygsfältet utvecklare skulle visa:

-<div id = "Tab1Content">
  -<div>
    -<div>
      -<div id = "Tab2Content">
        -<div>
           …………………………
                   </div>  <— Slutligen visar det lades hela vägen ner här!

Så, om jag gjorde en $("# Tab1Content").Dölj(), Jag döljer också Tab2 och jag kunde aldrig visa Tab2 om jag inte visar också på Tab1.  Jag kopierade och klistrade in koden till visual studio och det visade alla den div beklädnad upp snyggt, precis som de ska göra, Titta här:

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

Jag slog mitt huvud mot väggen ett tag och märkte att koden i den faktiska HTML genererar mycket tom <div> Märken, liksom:

<organ>

  <div id = "Tab1Content">

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

  </div>

  <div id = "Tab2Content">

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

  </div>

</organ>

(Ovanstående är waaaaaaaaaaaay banaliseras.  Tom div-taggarna är helt giltiga. Några av mina <div> Märken var fulla av innehåll, men många fler var inte.  Jag kom till insikten att min <XSL:för varje> direktiven avger i kortform div-taggar när xsl:för varje inte "hitta några data.  Jag tvingas en HTML-kommentar till utdata, som visas:

image

 

När jag gjorde det, alla div uppradade snyggt och min fliken växling började arbeta.

Som alltid, Jag hoppas att detta hjälper någon i en nypa.

</slutet>

Prenumerera på min blogg.

Följ mig på Twitter vid http://www.twitter.com/pagalvin

Quick Fix: "Content-type namnet"$ resurser:ReportServerResources … kan inte innehålla … specialtecken”

Jag har spenderar tid rensa upp en SharePoint 2010 webbplats och en av frågorna som rensning som avser en skadad / felaktigt installerad SQL Server Report Services frågan.  Problemet uppstod när en av mina kolleger försökte spara en webbplats som en mall och sedan skapa skapar en ny webbplats som bygger på mallen.  Spara drift fungerade bra, men när hon försökte skapa den nya webbplatsen, SharePoint visas följande felmeddelande:

Fel

Innehållstyp namnet "$ resurser:ReportServerResources,DataSourceContentTypeName;"kan inte innehålla: \ / : * ? “ # % < > { } | ~ & , två på varandra följande perioder (..), eller specialtecken såsom en flik.

Här är en skärmen cap:

 

image

Jag hade en titt på vilka innehållstyper på webbplatsen och hitta det:

image

Dessa innehållstyper är klart ohälsosamt.

Problemet verkar komma en hel del på Internet och det verkar inte finnas ett enda samförstånd om hur man ska lösa det.  Jag hittade en praktisk tabell som mappats felaktigt innehållstyp namnen till bra innehållstyp namn här: http://social.technet.microsoft.com/Forums/en-ZA/sharepoint2010programming/thread/cb03e866-8184-4943-acfe-cafffa1b8b7a.  Jag uppdaterat dem alltså manuellt:

image

(BrightStarr namnet är självklart tillval, men det skadar inte Leende )

Detta tillät mig att skapa en ny mall och didn't break något på andra webbplatser, inklusive vissa PerformancePoint Server-grejer som en helt annan grupp människor har arbetat med.  Jag var då kunna skapa en ny webbplats på mallen.  Framgång!

Jag är inte säker på att detta är en 100% lösning, men det fick mig och alla inblandade förbi detta irriterande fel.  Om jag hittar något nytt, Jag ska skicka en uppdatering.  Min nervositet härrör från det faktum att dessa namn inte bör vara fel i första hand och genom att fastställa visningsnamn, Jag inte tangerar det interna namnet. 

</slutet>

Prenumerera på min blogg.

Följ mig på Twitter vid http://www.twitter.com/pagalvin

En orsak för "skaparen av det här felet inte angav en anledning.”

Jag har gjort en hel del arbete med SharePoint search-på sistone och särskilt klassen KeywordQuery, egenskaper och metoder.

Om du vill att resultatuppsättningen till resultat utöver de vanliga misstänkta (se här), du lägger till det i SelectedProperties samling, som i:

myKeywordQuery.SelectProperties.Add("xyzzy");

Stort tack och ett tips av en keps till Corey Roth och denna oerhört hjälpsamma blogginlägg (http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/2008/02/19/how-to-use-the-moss-enterprise-search-keywordquery-class.aspx)

I mitt fall, "xyzzy" inte är faktiskt en hanterad egenskap.  När jag har lagt till det SelectedProperties ändå, SharePoint kastade en av min favorit någonsin runtime undantag:

"Skaparen av det här felet angav inte ett skäl."

Jag gillar särskilt kapital "R" i skäl.  Detta låter för mig som .net motsvarande"Jag har ingen mun, och jag måste skrika.”

</slutet>

Prenumerera på min blogg.

Följ mig på Twitter vid http://www.twitter.com/pagalvin

Praktisk: Standard resultatet från KeywordQuery sökning

När du anropar Execute() metoden på en KeywordQuery, Du kan skapa en ResultTable som bygger på ResultType.RelevantResults.  Denna kodavsnitt illustrerar vad jag menar:

ResultTableCollection resultsTableCollection = myKeywordQuery.Execute();

ResultTable searchResultsTable = resultsTableCollection[ResultType.RelevantResults];

Den resulterande tabellen kommer att ha följande kolumner av information: 

Arbets-ID
Rang
Avdelning
Författare
Storlek
Sökväg
Beskrivning
Skriva
Platsnamn
CollapsingStatus
HitHighlightedSummary
HitHighlightedProperties
ContentClass
IsDocument
PictureThumbnailURL
ServerRedirectedURL

Jag kommer denna lista från en SharePoint 2010 miljö, Enterprise edition.  Förhoppningsvis blir det praktiskt till någon i framtiden.

</slutet>

Prenumerera på min blogg.

Följ mig på Twitter vid http://www.twitter.com/pagalvin

En anledning till: "Det gick inte att extrahera cab-filen i lösningen”

När du arbetar med en webbdel för visual studio-projektet idag, Jag gjorde en mindre re-org vissa filer sättas i mappen _layouts som en del av driftsättningsprocessen. Särskilt, Jag har bytt namn en JS-fil från "TypeAhead.js" till "TypeAhead(gamla).JS"  Jag planerar att ta bort det så snart som dess efterföljare "TypeAhead.js" visar sig rätt.  Det såg ut såhär:

image

Detta orsakat omedelbart problem med visual studio när jag försökte distribuera projektet:

Fel uppstod i distributionen steg "Lägga till lösning": Det gick inte att extrahera cab-filen i lösningen.

Det visar sig att du inte bör lägga en parentes i filnamn.  Jag tagit bort den parens och som löst problemet.

</slutet>

Prenumerera på min blogg.

Följ mig på Twitter vid http://www.twitter.com/pagalvin