Monatliche Archive: Mai 2011

PerformancePoint und Fehler 33494

Einer meiner Kunden rief heute bei ihrem PerformancePoint-Umfeld (in SharePoint 2010) brach.  Eine app-Servern in der Farm lief geringen Speicherplatz auf der Festplatte.  Unter Berücksichtigung, dass, der Client deinstalliert "too much" und die PP-Sachen alle nicht mehr funktioniert.  Verschiedene Webparts zeigen würde, "ein unerwarteter Fehler ist aufgetreten. Fehler 33494. Zusätzliche Informationen wurden für den Administrator angemeldet":

image

Ich schaute auf die Fehler und nicht etwas speziell für "Fehler 33494" finden, aber diese MSDN Foren Beitrag war hilfreich: http://social.technet.microsoft.com/forums/en-us/sharepoint2010setup/thread/E1FE189D-7F89-455D-A98B-C1A12D8626AB

Ich fand die ADOMD.NET hier als Komponente in SQL Server 2008 Featurepack: http://www.microsoft.com/downloads/en/details.aspx?FamilyId=228DE03F-3B5A-428A-923F-58A033D316E1&displaylang=en

image

(zum Vergrößern anklicken)

Heruntergeladen und installiert, und es alles behoben.

Ich denke, dass dies ist eine ziemlich Spinner Art Fehler, aber wenn du es, Sie müssen mindestens eine Option.

</Ende>

Onnieren Sie meinen Blog ab.

Folgen Sie mir auf Twitter bei http://www.twitter.com/pagalvin

Lists.asmx, GetListItems und Ordner

Ich tat etwas Forschung für jemanden heute rund um den list.asmx-Web-Service im Rahmen des SharePoint 2010 (und früher).  Sie war in der Lage, die Listenelemente im Stammordner (die Namen der Unterordner), aber Elemente in Unterordner erhalten könnte.  Ich habe einige schauen herum auf dem Internets und es ist ein überraschend häufig gestellte Frage.  Noch, Ich könnte eine gute Antwort auf die einfache Frage nicht erhalten., "Wenn ich den Ordner weiß, Wie bekomme ich die Elemente in den Ordner?”  Um ehrlich zu sein, Ich versuchte nicht allzu hart, da ich zu Figur diesein raus auf eigene Faust für eine Weile wollte Lächeln.

Um dies einzurichten, Ich habe eine Site mit dem Namen "Blogging Scenarios" und eine benutzerdefinierte Liste mit dem Namen "Benutzerdefinierte Liste mit Sub-Ordner".  Ich habe dann Ordner mit dem Namen:

  • Jahr 2005
  • Jahr 2006
  • Jahr 2007

Ich hinzugefügt ein paar Elemente in den Ordner "Jahr 2006".  Dies ist, wie es aussieht:

image

Mein Freund ist nicht schreiben von C#-Code, sondern eher mit Hilfe von Java, So war der SOAP-Umschlag, was sie wirklich brauchte.  Zu erhalten, die, Ich schrieb ein wenig jQuery und Fiddler dann verwendet, um das tatsächliche HTTP-Gespräch zu erhalten.

Hier ist die relevante jQuery (Ich kopiert den Code unten unten wenn Sie kopieren möchten):

image

Sie erste Schlüssel ist, um sowohl eine <queryOptions> und <QueryOptions> Knoten.  Der zweite Schlüssel ist, dass die <Ordner> der Knoten ist ein URL, auf den der Client Zugriff hat.

Möglicherweise gibt es andere Möglichkeiten, um dies, aber dies funktioniert gut für mich, bei der Verwendung von jQuery.

Hier ist der SOAP-Umschlag für die oben:

<soapenv:Umschlag xmlns:Soapenv =’http://Schemas.xmlsoap.org/SOAP/Envelope/’>                
  <soapenv:Körper>
    <GetListItems Xmlns =’
http://Schemas.Microsoft.com/SharePoint/SOAP/’>
      <listName>Benutzerdefinierte Liste mit Sub-Ordner</listName>
      <viewFields>  
        <ViewFields>
          <FieldRef-Name =' Titel’ />
          <FieldRef-Name ='EncodedAbsUrl’ />
        </ViewFields>
      </viewFields>
      <queryOptions>
        <QueryOptions>
          <Ordner>
http://demoserver1-Blogging Szenarien/Listen/benutzerdefinierte Liste mit Sub-Ordner/Jahr 2006</Ordner>
        </QueryOptions>
      </queryOptions>
   
</GetListItems>
  </soapenv:Körper>
</soapenv:Umschlag>

Viele Beispiele und Diskussion um dies führte mich zu glauben, dass alles, was ich brauche <QueryOptions> und geben Sie einen Ordnernamen ein.  Für mich, Ich müssen sowohl in wrap <queryOptions> ebenso wie geben Sie eine vollqualifizierte URL für den <Ordner> Knoten.

Hier ist das jQuery-AJAX-setup:

$(Dokument).bereit(Funktion() {
       Var SoapEnv =
           "<soapenv:Umschlag xmlns:Soapenv =’http://Schemas.xmlsoap.org/SOAP/Envelope/’> \
               <soapenv:Körper> \
                    <GetListItems Xmlns =’http://Schemas.Microsoft.com/SharePoint/SOAP/’> \
                       <listName>Benutzerdefinierte Liste mit Sub-Ordner</listName> \
                       <viewFields> \
                           <ViewFields> \
                              <FieldRef-Name =' Titel’ /> \
                              <FieldRef-Name ='EncodedAbsUrl’ /> \
                          </ViewFields> \
                       </viewFields> \
                       <queryOptions> \
                         <QueryOptions> \
                           <Ordner>http://demoserver1/Blogging Szenarien/Listen/benutzerdefinierte Liste mit Sub-Ordner/Jahr 2006</Ordner> \
                         </QueryOptions> \
                       </queryOptions> \
                   </GetListItems> \
               </soapenv:Körper> \
           </soapenv:Umschlag>";

</Ende>

Onnieren Sie meinen Blog ab.

Folgen Sie mir auf Twitter bei http://www.twitter.com/pagalvin

Lists.asmx, GetList und "Wert darf nicht null sein”

Heute entdeckte ich, dass die GetList() Methode in lists.asmx Es ist anfällig für eine geheimnisvolle "Wert darf nicht null sein" Ausnahme auslösen oder Webdienst hat sehr sorgfältig aufgerufen werden (und das geht davon aus, dass Sie vorbei die schlimmer generische Fehlermeldung erhalten können, "Ausnahme des Typs ' Microsoft.SharePoint.SoapServer.SoapServerException’ ausgelöst wurde.")  Speziell, Ich fand, dass Sie keine Art von Präfix auf die GetList-Methode bereitstellen können.  Der folgende jQuery-Ausschnitt zeigt die:

image

Wenn Sie das tun, der Webdienst antwortet mit "Wert darf nicht null pro dies als sein" Fiddler-bereitgestellten HTTP-Protokoll:

<?XML Version = "1.0" Encoding = "Utf-8"?>
  <Seife:Umschlag
     xmlns:Seife ="
http://Schemas.xmlsoap.org/SOAP/Envelope/"    
     xmlns:Xsi = "
http://www.w3.org/2001/XMLSchema-instance
     xmlns:XSD ="
http://www.w3.org/2001/XMLSchema">

  <Seife:Körper>
    <Seife:Fehler>
      <FaultCode>Seife:Server</FaultCode>
      <faultString>
        Ausnahme des Typs ' Microsoft.SharePoint.SoapServer.SoapServerException’ ausgelöst wurde.
      </faultString>
      <Detail>
        <ErrorString Xmlns ="
http://Schemas.Microsoft.com/SharePoint/SOAP/">
Wert darf nicht null sein..
        </ErrorString>
      </Detail>
    </Seife:Fehler>
  </Seife:Körper>
</Seife:Umschlag>

Natürlich, Sie würde nicht das Präfix "s0" wahrscheinlich auf eigene hinzufügen., aber einige Werkzeuge sind dafür anfällig (wie Eclipse).

Dies ist umso mehr verwirrend / frustrierend, da andere Methoden Präfixe tolerieren.  Zum Beispiel, die GetListCollection Methode dagegen nicht, wenn es vorangestellt worden ist, auch mit Unsinn Präfixe wie "Xyzzy":

image

Diese "Wert darf nicht null sein" scheint ziemlich häufig mit lists.asmx so hoffentlich dies jemand in Zukunft helfen wird.

</Ende>

Onnieren Sie meinen Blog ab.

Folgen Sie mir auf Twitter bei http://www.twitter.com/pagalvin

Endlos Schachteln <div> Markierungen und jQuery

Dies scheint, wie so ein Spinner-Thema, Ich bin nicht sicher, dass es wirklich lohnt, über das Bloggen, aber das hat nie aufgehört mich vor, So hier gehen wir Lächeln

Ich bin an einem Projekt arbeiten wo ich einige Daten von einer Suche ziehen bin, Verpackung es bis in eine XML-Nachricht und dann die XML sich letztlich verwandelt in HTML via XSLT.  Es gibt eine Menge von jQuery beteiligt, ein wenig davon implementiert einige der Tab-Taste Funktionen.  Wenn Sie auf eine Registerkarte klicken (wirklich, eine <div>), jQuery ruft .hide() und ...zum() auf verschiedenen divs (der erste Seite laden lädt alle Inhalte, so gibt es in diesem Fall keine postbacks).

Ein paar Stunden, die Registerkarte Schaltlogik Schritte auffälliges Verhalten und es würde nicht eine meiner Registerkarten zeigen.  Ich verfolgt letztlich es bis auf die Tatsache, dass InternetExplorer (mindestens) dachte, dass die <div> Tags geschachtelt weit, weit tiefer als beabsichtigt.Die Developer Toolbar zeigen würde:

-<Div Id = "Tab1Content">
  -<div>
    -<div>
      -<Div Id = "Tab2Content">
        -<div>
           …………………………
                   </div>  <— endlich zeigt es hier ganz unten geschlossen wurde!

Also, Wenn ich habe ein $("# Tab1Content").Ausblenden(), Ich würde auch Tab2 verstecken und ich könnte nie Tab2 zeigen, wenn ich nicht auch Tab1 zeigen.  Ich Kopieren und Einfügen den Code bis in visual Studio und es zeigte alle die Div Futter bis schön, so, wie sie angeblich zu tun, wie folgt aussehen:

-<Div Id = "Tab1Content">
  +<div>
  +<div>
-<Div Id = "Tab2Content">
  +<div>
  +<div>

Ich schlug meinen Kopf gegen die Wand für eine Weile und bemerkte, dass in der eigentlichen HTML Code eine Menge von leeren generiert wurde <div> Schlagwörter, wie:

<Körper>

  <Div Id = "Tab1Content">

    <Div Id = "row1" />
    <Div Id = "row2" />

  </div>

  <Div Id = "Tab2Content">

    <Div Id = "row1" />
    <Div Id = "row2" />

  </div>

</Körper>

(Das oben genannte ist Waaaaaaaaaaaay vereinfacht.  Die leere Div-Tags sind völlig gültig. Einige meiner <div> Markierungen waren voll von Inhalten, aber viel mehr nicht.  Ich kam zu der Erkenntnis, dass mein <XSL:für jeden> Richtlinien wurden die Kurzform ausgeben Div-tags wenn die XSL-Datei:für jede nicht ' finden Sie alle Daten.  Die Ausgabe einen HTML-Kommentar gezwungen, wie gezeigt:

image

 

Nachdem ich den tat, des Div schön aufgereiht und begann meine Tab switching.

Wie immer, Ich hoffe, dass dieses Hilfen im Notfall.

</Ende>

Onnieren Sie meinen Blog ab.

Folgen Sie mir auf Twitter bei http://www.twitter.com/pagalvin

Quick Fix: "Den Namen des Inhaltstyps"$ Resources:ReportServerResources … nicht enthalten … Sonderzeichen”

Ich habe einige Zeit Bereinigen einer SharePoint verbrachte 2010 Website und eine der Bereinigung Fragen bezieht sich auf eine beschädigte / falsch installierte SQL Server Report Services-Problem.  Das Problem entstand, als einer meiner Kollegen versucht, eine Website als Vorlage speichern und erstellen Sie dann eine neue Website basierend auf dieser Vorlage erstellen.  Der Speichervorgang Vorgang wirkten Bußgeld, aber als sie versuchte, die neue Website zu erstellen, SharePoint folgende Fehlermeldung angezeigt:

Fehler

Der Content-Type-Name "$ Resources:ReportServerResources,DataSourceContentTypeName;' kann nicht enthalten: \ / : * ? “ # % < > { } | ~ & , zwei aufeinander folgende Punkte (..), oder Sonderzeichen wie z. B. eine Registerkarte.

Hier ist eine Bildschirm-cap:

 

image

Ich hatte einen Blick auf die Inhaltstypen auf der Website und fand dieses:

image

Diese Inhaltstypen sind eindeutig ungesund.

Dieses Problem scheint zu viel auf dem Internets kommen und es scheint nicht zu einem einzigen Konsens über wie es zu lösen.  Fand ich eine praktische Tabelle, die die schlechten Content-Type-Namen hier gute Content-Type-Namen zugeordnet: http://social.technet.microsoft.com/Forums/en-ZA/sharepoint2010programming/thread/cb03e866-8184-4943-acfe-cafffa1b8b7a.  Ich aktualisierte manuell sie auf diese Weise:

image

(BrightStarr der Name ist natürlich optional, aber es kann nicht Schaden Lächeln )

Dies erlaubte mir, Erstellen einer neuen Vorlage und nicht alles auf die anderen Seiten zu brechen, einschließlich einige PerformancePoint Server-Sachen, die eine ganz andere Gruppe von Menschen arbeiteten an.  Ich war dann in der Lage, auf der Vorlage eine neue Website erstellen.  Erfolg!

Ich bin mir nicht sicher, dies ist ein 100% Lösung, aber es hat mir und allen Beteiligten diese Vergangenheit ärgerlichen Fehler.  Wenn ich etwas neues finden, Ich werde ein Update.  Meine Nervosität ergibt sich aus der Tatsache, dass diese Namen falsch in erster Linie und durch die Festlegung der Anzeigename nicht, Ich bin nicht den internen Name berühren. 

</Ende>

Onnieren Sie meinen Blog ab.

Folgen Sie mir auf Twitter bei http://www.twitter.com/pagalvin

Eine Ursache für "der Schöpfer dieses Fehlers keinen Grund angegeben haben.”

Ich mache eine Menge Arbeit mit SharePoint-Suche in letzter Zeit und insbesondere die KeywordQuery-Klasse, Eigenschaften und Methoden.

Möchten Sie das Resultset wieder Ergebnisse jenseits der üblichen Verdächtigen (siehe hier), Sie hinzufügen sie der Auflistung SelectedProperties, wie in:

myKeywordQuery.SelectProperties.Add("Xyzzy");

Vielen Dank und eine Spitze des Hutes zu Corey Roth und Diese enorm hilfreich Blog-post (http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/2008/02/19/how-to-use-the-moss-enterprise-search-keywordquery-class.aspx)

In meinem Fall, "Xyzzy" ist eigentlich eine verwaltete Eigenschaft nicht.  Wenn ich es SelectedProperties trotzdem hinzugefügt, SharePoint warf eine meiner Lieblings immer Laufzeitausnahmen:

"Der Schöpfer dieser Störung keinen Grund geben."

Besonders gut gefällt mir die Hauptstadt "R" in der Vernunft.  Das klingt für mich wie die.NET-Äquivalent des"I have no mouth, and I must scream.”

</Ende>

Onnieren Sie meinen Blog ab.

Folgen Sie mir auf Twitter bei http://www.twitter.com/pagalvin

Praktisches Nachschlagewerk: Standard-Ergebnisse aus KeywordQuery Suche

Beim Aufrufen der Execute() eine KeywordQuery-Methode, Sie können eine ResultTable basierend auf ResultType.RelevantResults erstellen.  Dieser Codeausschnitt veranschaulicht, was ich meine:

ResultTableCollection ResultsTableCollection = myKeywordQuery.Execute();

ResultTable SearchResultsTable = ResultsTableCollection[ResultType.RelevantResults];

Die sich ergebende Tabelle müssen die folgenden Spalten mit Informationen: 

Arbeits-ID
Rang
Titel
Autor
Größe
Pfad
Beschreibung
Schreiben
SiteName
CollapsingStatus
HitHighlightedSummary
HitHighlightedProperties
ContentClass
IsDocument
PictureThumbnailURL
ServerRedirectedURL

Eine SharePoint Liste abgeleitet 2010 Umgebung, Enterprise-Edition.  Hoffentlich wird es praktisch, um jemand in Zukunft sein.

</Ende>

Onnieren Sie meinen Blog ab.

Folgen Sie mir auf Twitter bei http://www.twitter.com/pagalvin

Ein Grund für: "Fehler beim Extrahieren der Cab-Datei in der Projektmappe”

Während der Arbeit an einem Webpart visual Studio Projekt heute, Ich habe eine kleine Rück-Org einige Dateien in den Ordner _layouts als Teil des Bereitstellungsprozesses umgesetzt werden. Speziell, Ich benannte eine JS-Datei von "TypeAhead.js" auf "TypeAhead(alte).Js"  Ich plane, es zu entfernen, sobald dessen Nachfolger "TypeAhead.js" richtigen beweist.  Es sah so aus:

image

Dies verursacht sofort ein Problem mit visual Studio, als ich versuchte, das Projekt bereitstellen:

Fehler bei der Bereitstellungsschritt 'Projektmappe hinzufügen': Fehler beim Extrahieren der Cab-Datei in der Projektmappe.

Es stellt sich heraus, dass Sie keine Klammer in Dateinamen einfügen sollten.  Ich entfernte die Pars und das Problem gelöst.

</Ende>

Onnieren Sie meinen Blog ab.

Folgen Sie mir auf Twitter bei http://www.twitter.com/pagalvin