Archiv der Kategorie: SharePoint-Entwicklung

Bambus Kalender Interaktion mit SharePoint führt dazu, dass "ein unerwarteter Fehler aufgetreten"

Heute, Ich habe in einer Umgebung gearbeitet, die einen Bambus-Kalender-Webpart für einige verbesserte Zusammenarbeit verwendet. Dies ein standard Medium/kleiner Bauernhof mit zwei Load-balanced WFEs, ein "Application Server" für die Indizierung und InfoPath und einer gruppierten SQL-back-End.

Der Client installiert einige Disaster-Recovery-Software auf eine von der WFEs und, die Folge einer defekten WFE für eine bestimmte Website in der Websitesammlung. Immer wenn Lastenausgleich wies auf die betroffenen WFE und dieser Website, Benutzer sah ein weitgehend leerer weißer Bildschirm mit dem Satz "ein unerwarteter Fehler ist aufgetreten". Keine andere Info zeigte, gerade dieser Satz.

Sie baten mich, sie zu betrachten. Ich leicht das Problem reproduziert und dann hat ein ?Inhalt = 1 am Ende der URL. Dies ist, wie ich lernte, dass sie das Webpart Bambus benutzten. Ich ging zurück zu der Seite und jetzt, plötzlich, Es zeigte mir eine nette geordnete Fehlermeldung:

image

Ich weiß nicht, was passiert ist oder was ich getan habe, um die kontrollierte Fehlermeldung, die andere als Anhängen erhalten die ?Inhalt = 1 Bit Query-String.

Dies ist wahrscheinlich ein sehr selten Rand-Fall aber wenn Sie diese Nachricht, "Unerwarteter Fehler" go ahead und hinzufügen ?Inhalt = 1 in der Abfragezeichenfolge und sehen, wohin das führt.

</Ende>

Onnieren Sie meinen Blog ab.

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

Technorati Tags: ,

Mit dem Reflektor auf Microsoft.SharePoint.dll

Redgate .NET-Reflektor Michael Blumenthal hat ein Artikel über Warnungen und Ansichten ("Welche Ansichten können verwendet werden beim Erstellen einer Warnungs ?"), Das ist interessant, auf seinen eigenen Verdiensten. Jedoch, Ich interessierte mich noch mehr zu sehen, wie er geht methodisch durch die Verwendung Redgates .NET Reflektor. Schritt für Schritt, Er zeigt, wie mit diesem Tool Weg hinunter wie SharePoint ermittelt, ob eine Aussicht auf eine Liste "subscribable sein sollte" in Ermangelung eines besseren Wortes (er erklärt das viel besser als ich 🙂 ).

An diesem Punkt in der SharePoint-Ära, man müsste fast taub und blind gegenüber nicht gehört oder gelesen über die Verwendung dieses Tools werden. Es verfügt über erweiterte Zeug und mein eigenes Gefühl ist, dass es in vielerlei Hinsicht ein letztes Mittel-tool. Jedoch, Wenn Sie denken, Sie brauchen es aber nicht wirklich wissen wie, Michaels Zuschreibung scheint wie ein großes Tutorial zu diesem Thema.

</Ende>

Onnieren Sie meinen Blog ab.

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

Sortieren der Elemente im Kalender in der Kalenderansicht

Ich verwende einen Kalender zum Nachverfolgen von Podiumsdiskussionen an einem bestimmten Tag. Ich habe zwei Sitzungen: vormittags und nachmittags. Ich möchte eine Ansicht erstellen, die vormittags zeigt nur über eine Sitzungs-ID in alphabetischer Reihenfolge aufgeführt. Dies ist ein wenig schwierig zu erreichen (Wenn ich etwas wirklich klar verpasst).

Ich kann problemlos erstellen, eine gefilterte Ansicht zeigt nur die Tagesereignisse. Im Kalender alle Ereignisse angezeigt werden, und wenn sie alle nehmen Platz auf der gleichen Stunde, Es listet sie nebeneinander in der Stunde-Steckplatz. Das ist geil. Der schwierige Teil ist, dass, Standardmäßig, Sie will, sie im Format ID Liste. Also, Wenn ich "Session 02 hinzufügen" und dann "Session 01" zum Kalender, Es zeigt ihnen in dieser Reihenfolge (dh, Sitzung 02 und dann Session 01). Um sie in Session ID Reihenfolge aufzulisten, Ich dachte, diese Dinge zu versuchen:

  1. Konfigurieren Sie die Ansicht über die Web-Benutzeroberfläche. Kein Glück. Es gibt keine Optionen Elemente auf diese Weise sortieren.

    Da das nicht funktioniert, Ich bin jetzt in der Hoffnung dort eine CAML-Abfrage irgendwo drin, die mir ist erlaubt das Sortieren überschrieben. CQWP läßt mich machen, die Art der ändern, Vielleicht wird Kalender sowie?

  2. Das Webpart bearbeiten, Suchen Sie nach einem "export" Funktion und … BZZZT! Die XML können nicht exportiert werden.. Es gibt keine Exportoption.

    Ich bin noch Hoffnung hält, dass ich finden und einige CAML-Abfrage ändern kann. Seitdem ich das Webpart kann nicht exportieren., Damit bleibt SharePoint Designer.

  3. Ich einen Sandkasten-Website das Kalender-Webpart hinzufügen, und öffnen Sie die Website mithilfe von SharePoint Designer. Ich schaue mir das Markup für das Webpart und ich finde was ich Suche. Es hat codiert Wahnsinn, aber es ist da: "<ListViewXml …. >codierte Wahnsinn</ListViewXml>". Speziell, Es ist dieses Juwel:

<Abfrage>
<Wo>
<DateRangesOverlap>
<FieldRef-Name = "Ereignisdatum" />
<FieldRef-Name = "Enddatum" />
<FieldRef-Name = "RecurrenceID" />
<Werttyp = "DateTime">
<Monat />
</Wert>
</DateRangesOverlap>
</Wo>
<OrderBy><FieldRef-Name = "Session_x0020_ID" /></OrderBy>
</Abfrage>

(Ich habe decodiert die &lt;und &gt's und teilen Sie sie auf mehrere Zeilen um der Klarheit willen).

Fügen Sie die <OrderBy> Bit und jetzt es Session ID sortiert, nicht die interne Liste Element-ID.

GIGANTISCHE Tipp o’ der Hut Becky Isserman für ihr Kommentar, Isha Sagi Blog-post: http://www.sharepoint-tips.com/2008/07/caml-sorting-by-file-name.html. Würde ich nicht setzen haben die <OrderBy> an der richtigen Stelle ohne ihr Kommentar.

Ich hoffe, dass dies deutlicher mit Screenshots bald schreiben, aber für den Fall, dass ich nie tun, zumindest habe ich so viel.

</Ende>

SharePoint-Features & Management Lösungen — Vergessen Sie nicht, das u in CRUD (oder das d für diese Angelegenheit)

Gemeinsam verbringen wir viel Zeit damit, über SharePoint-Lösungen — wie sie erstellt, welches Tool verwenden, Was passiert, wenn sie nicht bereitstellen, Zeitgeberaufträge, Bereiche, usw.. Wir verbringen so viel Zeit damit, über die vorab-Bits, die es leicht vergessen wird, dass wir zu ihnen als auch den Rückzug. Zurückziehen der Lösungen ist wahrscheinlich schwieriger, aus Sicht der Konzeption, als deren Bereitstellung. Bereitstellung ist im Grunde ein Kochbuch-Affäre. In der Regel, Installieren eines Features, haben Sie vielleicht einen Featureempfänger einige Daten in einer Liste zu laden, so etwas. Jedoch, zurückziehen ist möglicherweise komplexer.

Eine bestimmte Lösung kann Artefakte wie diese erstellen.:

  • Content-Type
  • Listendefinition
  • Site-Definition
  • Daten in einer Liste
  • Sogar Empfänger
  • InfoPath-Formulare

Die Liste geht weiter.

Obwohl es natürlich wichtig, eine Lösung zu entwerfen, instanziiert, die diese Artefakte richtig, Es ist genauso wichtig, betrachten das Update und delete Fällen. Wenn Ihre Lösung eine neue Liste erstellt und diese Liste mit Daten füllt, Was passiert, wenn die Lösung eingefahren? In einigen Fällen, die Liste sollte gestrichen. In anderen Fällen, Es sollte intakt aus historischen Gründen überlassen bleiben. Ihre Geschäftsanforderungen führt Sie auf die richtige Entscheidung.

Um dabei zu helfen, Erstellen Sie eine Matrix, die jedes Artefakt listet, die Ihre Lösung SharePoint bereitstellt. Führen Sie drei Spalten pro Artefakt, ein/e für erstellen, Update und delete. Für jeden Fall, das richtige Ergebnis für diesen Vorgang bestimmen.

Diese Art von Analyse ist natürlich am besten getan, bevor die Lösung überhaupt zu einer SharePoint-Farm bereitgestellt wird. Jedoch, wie Rauchen, Es ist nie zu spät um zu beginnen, Dinge richtig. Erstellen Sie diese Matrix und entwickeln Sie einen Plan, um die fehlenden Update/löschen-Szenarios beziehen. Es kann ein schwer zu lösendes Problem sein., aber zumindest werden Sie einen Rahmen um das Problem.

</Ende>

Onnieren Sie meinen Blog ab.

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

Technorati Tags:

Quick Fix: Die Interaktion mit SharePoint-Webdienste, InvalidOperationException

Vor einer Million Jahren, Ich half entwickelt einen Webdienst, der über eine benutzerdefinierte Aktion für ein SharePoint Designer-Workflows aufgerufen wurde. Diese Woche, der Kunde wollte um nach Produktion (Schließlich!) So haben wir.

Die benutzerdefinierte Aktion funktioniert, aber nicht für der Webdienst, aus den es aufgerufen, geben uns diesen Fehler:

System.InvalidOperationException: Dieser Vorgang kann nur auf einem Computer ausgeführt werden, die zu einer Serverfarm von Benutzern verknüpft ist, die Berechtigungen in SQL Server aus der Konfigurationsdatenbank gelesen haben. Um diesen Server in der Serverfarm verbinden, Verwenden Sie SharePoint-Produkte und -Technologien Konfigurations-Assistenten, befindet sich im Startmenü unter Verwaltung.
bei Microsoft.SharePoint.Administration.SPWebApplication.Lookup(URI requestUri)

Stellt sich heraus, dass ich vergaß, den Dienst der SharePoint-Anwendungspool in IIS hinzufügen. Einmal habe ich, Es wirkten Bußgeld.

In diesem MSDN-Forum-Beitrag gab mir den Hinweis, was, den ich brauchte: http://social.msdn.microsoft.com/Forums/en-US/sharepointdevelopment/thread/2c97c004-7118-4e06-a62c-b2b0ac07ac99

</Ende>

Onnieren Sie meinen Blog ab.

Folge mir auf twitter: http://twitter.com/pagalvin

Technorati Tags:

Schnell und einfach: SPFolder von SPItemList zu erhalten

Ich in dieses Problem laufen zu halten und die Google scheint nie zu verstehen, was ich tun möchte, also ich dachte, ich würde das aufschreiben.

Ich habe eine Menge Ereignisempfänger Debuggen in der letzten Woche oder zwei getan. ER ist gegen eine Dokumentbibliothek definiert.. Die einzelnen Elemente in der Dokumentbibliothek beziehen sich eng auf die übergeordneten Ordner. Also, Ich bekomme immer den Ordner des Elements für verschiedene Manipulationen. Während des Debuggens, Ich brauchte, um die Metadaten eines Ordners für ein bestimmtes Element aktualisieren deren ID ich weiß.

Hier ist eine kleine Konsolenanwendung (auf Server in der Farm ausgeführt) Das nimmt zwei Argumente: die ID eines Elements und einen Wert zuweisen, ein Feld, "Genehmigungsstatus". Es ist schwer-codes eine Menge Sachen und hat keine Fehlerüberprüfung.

Der Code sieht eine hartcodierte Website, Ruft eine hartcodierte Dokumentbibliothek und sucht dann das angegebene Element. Dann findet den übergeordneten Ordner des jeweiligen Elements und weist den Statuswert.

Die wichtigste Lehre hier für mich ist, dass die SPItem nicht erhalten Sie Zugriff auf den Ordner. Müssen Sie SPListItem.File verwenden.

Wenn jemand Sorgen zu bieten eine Kritik oder schlagen Sie einen besseren Weg, um den Ordner eines Elements, Bitte terlassen Sie einen Kommentar hin.

<Code>
Verwendung System;
Verwendung System.Collections.Generic;
Verwendung System.Text;
Verwendung Microsoft.SharePoint;
Verwendung System.Collections;

Namespace Conchango
{
    /// <Zusammenfassung>
 /// </Zusammenfassung>
 Klasse ManualFolderUpdate
    {
        statische privatevoid Main(Zeichenfolge[] args)
        {
            Zeichenfolge msh = "ManualFolderUpdate (v1. 0): "; // msh = "Message-Header"

 Konsole.WriteLine(msh + "Starten.  Ich war zuletzt am 04.08.08.");

            Zeichenfolge URL = http://localhost/xyzzy;

            Verwendung (SPSite oSPSite = Neu SPSite(URL))
            {

                Verwendung (SPWeb oSPWeb = oSPSite.OpenWeb())
                {
                    SPList DocLib = oSPWeb.Lists["Dokumente"];

                    Konsole.WriteLine(msh + "Got die Dokumentbibliothek.");

                    Konsole.WriteLine(msh + "Doc Lib Elementanzahl: [" + docLib.ItemCount + "].");

                    int FolderID = 0;
                    Zeichenfolge NewStatus = "xyzzy";

                    FolderID = System.Konvertieren.ToInt32(args[0].ToString());
                    Konsole.WriteLine("Sucht Ordner für Element: [" + FolderID + "].");

                    SPListItem Li = docLib.GetItemById(FolderID);

                    SPFolder ThisItemFolder = li.File.ParentFolder;

                    Konsole.WriteLine(msh + "Got des übergeordneten Ordners.");

                    NewStatus = Args[1].ToString();
                    Konsole.WriteLine("Einstellung Status zu [" + NewStatus + "].");

                    Konsole.WriteLine("Drücke return, das Update oder STRG-C abbrechen zu begehen.");

                    Konsole.ReadLine();

                    thisItemFolder.Item["Genehmigungsstatus"] = NewStatus;
                    thisItemFolder.Item.Update();

                    Konsole.WriteLine(msh + "Aktualisierung des Ordners abgeschlossen.  Beenden.");

                } // SPWeb verwenden

            } // mithilfe von SPSite

 Konsole.WriteLine(msh + "Beendet.");

        } // Main

    } // Klasse foldersync
} // Namespace
</Code>

</Ende>

Onnieren Sie meinen Blog ab.

Technorati Tags:

Ausblenden von benutzerdefinierte Aktionen in SharePoint

Vor einigen Monaten, während der Arbeit an einem Projekt für einen client, Ich habe ein feature. Unter anderem, Diese Eigenschaft definiert eine benutzerdefinierte Aktion (Diese erscheinen unter Websiteeinstellungen). Der einzige Zweck für diese Aktion war, mir zu zeigen, die die Featureaktivierung tätig war, wie erwartet. Im Grunde, Ich habe es als eine grobe Form des Debuggens.

Viel zu meiner Peinlichkeit, Dieses Debuggen Artefakt machte seinen Weg vom Dev UAT und Produktion, bevor jemand zu Fragen rund um, "Was ist dieser Link xyzzy?"

Jetzt, Wir sind in der Produktion und ich möchte wirklich nicht das Feature deinstallieren, Verlegenheit elements.xml und dann neu installieren.

Todd trübere wies darauf hin, eine einfache Möglichkeit, damit umzugehen. In seinen Worten:

"CustomActions sind nicht in die Datenbank kopiert, Sie sind direkt die Elements.xml-Datei lesen und in den Zustand der Anwendung zur Laufzeit kopiert. Also, Du musst nicht deaktivieren, Deinstallieren, neu installieren, und die Funktion zum Entfernen der CustomAction reaktivieren. Nur aus die Elements.xml-Datei entfernen und den Anwendungspool wiederverwenden(s) erfolgt. Das nächste Mal ist das Feature im Bereich, die CustomAction wird nicht mehr angezeigt."

Ich befolgte seine Anweisungen und, Natürlich, Sie arbeiten.

In meinem Fall, Dies ist die Abteilung Ebene Installation mit nur einem einzigen WFE. Wenn Sie sich mit diesem Problem in Zukunft und mehrere WFE, Ich glaube, dass müssen Sie umsteigen in den einzelnen.

</Ende>

Onnieren Sie meinen Blog ab.

Quick Fix: Löst den Zugriff auf SharePoint-Website [HttpException (0X 80004005): Zeitüberschreitung der Anforderung.]

Einer meiner Kollegen Entwickler diese Woche an einem Projekt arbeiten und lief in ein Timeout-Problem während der Arbeit am Gebäude einige verrückte Webpart. Seine Web-Teil war in Ordnung, aber "plötzlich" eine unabhängige Website wurde sehr langsam und häufig mit diesem Fehler Zeitüberschreitung:

[HttpException (0X 80004005): Zeitüberschreitung der Anforderung.]

Ich eingeloggt und sah, dass einige andere Seiten prima waren. Ich vermutete, dass gab es einige versteckte Webparts auf der Seite und mit dem treuen ?Inhalt = 1 Debug-Technik, Ich habe in der Tat finden 11 Webparts auf der Seite, nur zwei davon waren sichtbar. Noch besser (aus Sicht der let's-hope-I-find-something-ugly-here-that-I-can-fix), drei von diesen geschlossene Webparts hatte einen Namen, der "Fehler".

Ich löschte die Webparts (die selbst eine erstaunlich lange gedauert) und das Problem gelöst. Für heute 🙂

</Ende>

Onnieren Sie meinen Blog ab.

Technorati Tags:

Aufrufen von Webdiensten von SSRS von WSS / Moos in FBA-Umgebung

Wir brauchten, um die "CreateSubscription aufrufen" Methode auf einer SSRS-Webdienst, der in eine FBA gehostet wird verwaltet MOSS-Umgebung von einem benutzerdefinierten WebPart. Wir immer Variationen:

  • 401: Nicht autorisierte
  • Objekt verschoben

Das "Objekt verschoben" Nachricht wurde am interessantesten, weil es, dass sagen war das Objekt"" (Unser SSRS-service) "zog" zu login.aspx. Dies bedeutete natürlich hatten wir eine Art Authentifizierungsproblem.

Schließlich wurde mir klar, dass ich Lesezeichen einen Blog-Eintrag von Robert Garret beschrieben, die wie einen Allzweck-WSS/MOSS-Web-Service Leben innerhalb einer FBA-Umgebung aufgerufen. Beachten Sie, dass ich direkt auf den Artikel verlinken kann nicht (ab 06/09/08) weil es authentifizieren möchte. Der Link, den ich zur Verfügung stellen bringt Sie zu einem "alle-Beiträge" Ansicht und Sie können den bestimmten Artikel suchen, indem suchen "Zugreifen auf MOSS-Webdienste mithilfe von Forms Based Authentication".

Hier ist der Code, der für uns gearbeitet:

ReportingService2006 Rs = NULL; 
// Authentifizieren Authentifizierung Auth = Neu Authentifizierung(); 
auth.URL = "http://URL/_vti_bin/Authentication.asmx";
auth.CookieContainer =
Neu CookieContainer();
LoginResult Ergebnis = auth.Anmeldung("Userid", "Passwort");
If (Ergebnis.ErrorCode == LoginErrorCode.NoError) 
{
// Kein Fehler, So erhalten Sie die cookies.
CookieCollection Cookies = auth.CookieContainer.GetCookies(Neu URI(auth.URL));
Cookie AuthCookie = Cookies[Ergebnis.CookieName];
RS =
Neu ReportingService2006();
Rs.URL =
"http://Server/_vti_bin/ReportServer/ReportService2006.asmx";
Rs.CookieContainer =
Neu CookieContainer();
Rs.CookieContainer.Add(authCookie);
}
versuchen
{
  Rs.CreateSubscription(Bericht, extSettings, DESC, eventType, matchData, PARAMETERS1);
}
fangen (Exception ex)
{
  Console.WriteLine(Ex.Message.ToString());
}

Ich interpretiere Dinge wie diese Arbeiten:

  • Unserer Web-Seite muss der Authentifizierungsdienst DFÜ und sagen, "Hey, Tony, Es ist mir!".
  • Authentifizierungsdienst Antworten sagen, "Hey, Ich kenne dich. Wie sind die Kinder? Hier ist ein Token."
  • Wir rufen die SSRS-Service und sagen, "Tony schickte mir, Hier ist das Token."

</Ende>

Onnieren Sie meinen Blog ab.

Schnell und einfach: Bereitstellen einer Website mithilfe von SharePoint-Objektmodell In c#

Ich habe versucht, auf der Suche nach ein wenig Code Schnipsel, die zeigen würde, wie ich eine neue SPWeb in einer Websitesammlung erstellen können. Ich fand es als schnell oder leicht, wie ich erwartet hatte, so ich dachte, ich würde zusammen schlagen, einen kleinen Eintrag zu diesem Thema.

Dieser Code erstellt eine neue Wiki-Website:

 SPSite siteCollection;

    SiteCollection = Neu SPSite("http://Conchang-o9l8qi");

    SPWeb w = siteCollection.OpenWeb();

    w.Webs.Add("xyzzy", "Xyzzy Titel",
        "Xyzzy Beschreibung", 1033, SPWebTemplate.WebTemplateWIKI, falsch, falsch);

Meine anfängliche Suche ist fehlgeschlagen, weil ich war auf der Suche nach Phrasen wie "einer Website mithilfe von Sharepoint-Objektmodell bereitstellen" und dergleichen.

Wenn Sie Suche für "Webs.Add()", Hier finden Sie eine Reihe von sehr nützlich Blog-Einträge, SDK-Dokumentation, die zu diesem Thema in die Tiefe gehen und MSDN-Artikeln. Ich empfehle auf jeden Fall Diese Seite.

</Ende>

Onnieren Sie meinen Blog ab.

Technorati Tags: