Kategoria: Archiwum: Rozwój programu SharePoint

Bambus kalendarza interakcja z programu SharePoint powoduje, że "Wystąpił nieoczekiwany błąd"

Dzisiaj, I been pracy w środowisku, które wykorzystuje bambus kalendarz składnika web part dla niektórych poprawy współpracy. To standardowe średnie/małe gospodarstwa z dwóch równoważeniem obciążenia WFEs, "serwer aplikacji" dla indeksowania i InfoPath i klastrowanego SQL z powrotem koniec.

Klient rata niektórzy nieszczęście poprawa koniuktury oprogramowanie na jednym z WFEs i które doprowadziły w podziale WFE dla określonej witryny w zbiorze witryn. Ilekroć równoważenia obciążenia wskazał w dotkniętych WFE i tej witryny, użytkownicy widzieli głównie puste biały ekran z zdanie "Wystąpił nieoczekiwany błąd". Żadnych innych informacji wykazało, po prostu zdanie to.

Kazali mi spojrzeć na to. Łatwo powielany problem, a następnie dodaje ?zawartość = 1 na końcu adresu URL. To jest jak dowiedziałem się, że one były przy użyciu bambusa składnika web part. Wrócił do strony i teraz, nagle, pokazało mi Nicei uporządkowany komunikat:

image

Nie wiem, co się działo lub what I did komunikat błędu kontrolowanej aby wyświetlić inne niż dołączanie ?zawartość = 1 bitowy ciąg kwerendy.

Prawdopodobnie jest to przypadek bardzo rzadkich krawędzi, ale jeśli zostanie wyświetlony ten komunikat, "Wystąpił nieoczekiwany błąd" śmiało i dodać ?zawartość = 1 do ciągu kwerendy i zobacz, gdzie prowadzi to.

</koniec>

Subskrybowanie mój blog.

Follow me on Twitter wiek na http://www.twitter.com/pagalvin

Technorati znaczniki: ,

Używanie odblaskowego Microsoft.SharePoint.dll

Redgate .NET Reflector Michael Blumenthal ma wyrażać w górze artykuł na temat alertów i widoki ("Jakie widoki mogą być używane podczas tworzenia wpisu ?"), co jest ciekawe o własnych siłach. Jednakże, Byłem bardziej zainteresowany, aby zobaczyć, jak on metodycznie poprowadzi przez proces przy użyciu Torquay dla platformy .NET Reflector. Krok po kroku, on pokazuje, jak używać tego narzędzia namierzy jak SharePoint określa, czy widok na liście powinny być "subscribable" powodu braku lepszego programu word (he explains this much better than I do 🙂 ).

W tym momencie w erze SharePoint, prawie trzeba by być głusi i ślepi nie słyszeli lub czytali o za pomocą tego narzędzia. Posiada zaawansowany rzeczy i moje własne poczucie że jest pod wieloma względami narzędzie ostatniej szansy. Jednakże, Jeśli uważasz, że jest potrzebny, ale naprawdę nie wiem jak, Recenzja Michała wydaje się wielki tutorial na ten temat.

</koniec>

Subskrybowanie mój blog.

Follow me on Twitter wiek na http://www.twitter.com/pagalvin

Sortowanie elementów kalendarza w widoku Kalendarz

Jestem za pomocą kalendarza śledzić dyskusje panelowe w danym dniu. Mam dwie sesje: rano i po południu. Chcę, aby utworzyć widok, który pokazuje rano sesje tylko w kolejności alfabetycznej za pośrednictwem identyfikatora sesji. To jest trochę trudne do wykonania (chyba że I pominiętych coś rzeczywistych oczywiste).

Można łatwo utworzyć przefiltrowany widok pokazano tylko wydarzenia tego dnia. Kalendarz pokaże wszystkie te wydarzenia i jeśli wszyscy oni wziąć miejsce w tej samej godzinie, wymienia je obok siebie w gnieździe godziny. To świetnie. Najtrudniejsze jest to, że, Domyślnie, chce ich listę w formacie ID. Tak, Jeśli dodać "sesji 02" i następnie "sesji 01" do kalendarza, pokazuje je w tej kolejności (tj., Sesji 02 i następnie sesji 01). Ich listę w porządku sesji ID, Myślę spróbować tych rzeczy:

  1. Konfigurowanie widoku przy użyciu interfejsu użytkownika sieci web. Nie ma szczęścia. Tu s¹ nie opcje sortowania elementów w ten sposób.

    Ponieważ to nie pomoże, Jestem teraz nadzieję, że nie jest CAML zapytanie gdzieś w tam, że pozwoli mi zmienić sortowanie. CQWP pozwala mi sprawiają, że niby zmienić, być może kalendarz będzie także?

  2. Edytowanie składnika web part, poszukaj "wywóz" Funkcja i … BZZZT! Nie można wyeksportować jego XML. Istnieje opcja eksportu.

    Nadal trzymam się nadzieja, że można znaleźć i zmienić niektóre zapytania CAML. Ponieważ nie można wyeksportować składnika web part, który pozostawia SharePoint Designer.

  3. Dodawanie składnika web part kalendarz na stronę piaskownicy i otworzyć tej witryny za pomocą SharePoint Designer. Patrzę na znaczników dla składnika web part i Znajdź, what I 'm looking. To zakodował szaleństwo, ale jest: "<ListViewXml …. >zakodowany szaleństwo</ListViewXml>". W szczególności, istnieje ten klejnot:

<Kwerendy>
<W przypadku gdy>
<DateRangesOverlap>
<Nazwa FieldRef = "EventDate" />
<Nazwa FieldRef = "EndDate" />
<Nazwa FieldRef = "RecurrenceID" />
<Typ wartości = "DateTime">
<Miesiąc />
</Wartość>
</DateRangesOverlap>
</W przypadku gdy>
<OrderBy><Nazwa FieldRef = "Session_x0020_ID" /></OrderBy>
</Kwerendy>

(I wcześniej zdekodowane &lt;firmy i &gt's i podzielić je do wielu wierszy dla jasno¶ci).

Dodać <OrderBy> bit i teraz sortuje według Identyfikatora sesji, nie identyfikator elementu listy wewnętrznego.

Porada GIGANTYCZNĄ o’ kapelusz do Becky Isserman dla jej komentarz do ogłoszenia blogu Isha Sagi: http://www.sharepoint-tips.com/2008/07/caml-sorting-by-file-name.html. Nie wprowadziły <OrderBy> we właściwym miejscu bez jej komentarz.

Mam nadzieję, że do zwiększenia to bardziej wyraźnie z zrzutów ekranu wkrótce, ale w przypadku nigdy nie zrobić, co najmniej I did to znacznie.

</koniec>

Funkcje programu SharePoint & Rozwiązania zarządzania — Nie zapomnij u w CRUD (lub d dla tej sprawy)

Możemy wspólnie spędzają czas myślenia o rozwiązań SharePoint — jak je tworzyć, jakie narzędzie wybrać, co się stanie, jeśli ulegną one uszkodzeniu wdrożyć, zadania czasomierza, zakresy, itp. Możemy spędzają tyle czasu na myślenie o góry bity, które jest łatwo zapomnieć, że musimy wycofać je także. Wciągania rozwiązania jest chyba trudniejsze, z perspektywy projekt koncepcyjny, niż ich wdrażanie. Wdrożenie jest zasadniczo sprawą książki kucharskiej. Zazwyczaj, zainstalowania funkcji, być może mieć odbiornik funkcja załadować niektóre dane do listy, tego rodzaju rzeczy. Jednakże, wciągania jest potencjalnie bardziej złożone.

Rozwiązanie danego może utworzyć artefaktów takich:

  • Typ zawartości
  • Listy definicji
  • Definicja serwisu
  • Danych na liście
  • Odbiorniki nawet
  • Formularze programu InfoPath

Lista jest przechodzi kolejno.

Podczas gdy jest niewątpliwie ważny do zaprojektowania rozwiązania tych artefakty który tworzy poprawnie, to jest tak samo ważne rozważyć aktualizację i usuwanie przypadków. Jeśli twój roztwór tworzy nową listę i wypełnia wykaz danych, co się dzieje, gdy roztwór jest schować? W niektórych przypadkach, listy powinny być usunięte. W innych przypadkach, należy pozostawić nienaruszone do celów historycznych. Wymagania biznesowe poprowadzi Cię do właściwych decyzji.

Aby pomóc w tym, Tworzenie matrycy, która wyświetla każdego artefaktu, którą wdraża rozwiązanie programu SharePoint. Lista trzech kolumn na artefakt, jedną dla tworzenia, Update i delete. Dla każdego przypadku, określić poprawne wyniki tej operacji.

Tego rodzaju analiza jest oczywiście najlepiej wykonać przed rozwiązaniem jest kiedykolwiek do farmy programu SharePoint. Jednakże, Podobnie jak dla niepalących, to nigdy nie za późno, aby zacząć robić rzeczy właściwie. Tworzenie tej macierzy i opracowanie planu realizacji brakujących scenariusze aktualizacji/usuwania. To może być trudny problem do rozwiązania, ale co najmniej będziesz mieć umieszczasz pola wokół problem.

</koniec>

Subskrybowanie mój blog.

Follow me on Twitter wiek na http://www.twitter.com/pagalvin

Technorati znaczniki:

Quick Fix: Usługi sieci Web tej interakcji z programu SharePoint, InvalidOperationException

Mln lat temu, Pomogłem rozwinięte usługi sieci web, który został wywołany przez akcję niestandardową dla przepływu pracy programu SharePoint Designer. W tym tygodniu, klient chciał przenieść go do produkcji (Wreszcie!) więc zrobiliśmy.

Akcję niestandardową pracował czysty, ale usługa sieci web, którą on wywoływany nie, daje nam to błąd:

System.InvalidOperationException: Tę operację można wykonać tylko na komputerze, który jest przyłączony do farmy serwerów przez użytkowników, którzy mają uprawnienia w SQL Server do odczytu z bazy danych konfiguracji. Połączyć ten serwer do farmy serwerów, za pomocą programu SharePoint produktów i technologii Kreatora konfiguracji, znajduje się w menu Start, w folderze Narzędzia administracyjne.
w Microsoft.SharePoint.Administration.SPWebApplication.Lookup(URI requestUri)

Okazuje się, że zapomniałem dodać usługę do puli aplikacji programu SharePoint w programie IIS. Skoro ja zrobi³ ów, prawidłowo pracował.

Ten MSDN forum delegowania dał mi ten trop, potrzebne: http://social.msdn.microsoft.com/Forums/en-US/sharepointdevelopment/thread/2c97c004-7118-4e06-a62c-b2b0ac07ac99

</koniec>

Subskrybowanie mój blog.

Pójdź za mną na Twitterze: http://twitter.com/pagalvin

Technorati znaczniki:

Szybkie i łatwe: Się SPFolder SPItemList

Zachować uruchomiony na ten problem i Google nigdy nie wydaje się zrozumieć, co chcę zrobić, więc pomyślałem, że piszę to w dół.

Robiłem wiele odbiornik przypadku debugowania w ostatnim tygodniu lub dwóch. ER jest zdefiniowana z biblioteki dokumentów. Poszczególnych elementów w bibliotece dokumentów są ściśle związane z ich folderów nadrzędnych. Tak, Zawsze dostaję folder elementu dla różnych manipulacji. Podczas debugowania, Potrzebne do aktualizacji metadane folderu dla określonej pozycji ID, którego znam.

Tutaj jest trochę aplikacji konsoli (zaprojektowany do uruchamiania na serwerze w farmie) ów wziąć dwa argumenty: Identyfikator element i wartość, aby przypisać do pola, "Stan zatwierdzenia". Trudno kody wiele rzeczy i ma nie sprawdzanie błędów.

Kod wygląda na stronie zakodowanego, dostaje biblioteki dokumentów zakodowanego i następnie wyszukuje wskazany element. Następnie znajdzie folderu nadrzędnego elementu i przypisuje wartość stanu.

Najważniejsza lekcja dla mnie jest to, że SPItem nie uzyskać dostęp do folderu. Ty potrzebować wobec używać SPListItem.File.

Jeśli ktoś dba, aby oferować krytyki lub zaproponować lepszy sposób, aby uzyskać folder elementu, Proszę zostawić komentarz.

<kod>
przy użyciu Systemu;
przy użyciu System.Collections.Generic;
przy użyciu System.Text;
przy użyciu Microsoft.SharePoint;
przy użyciu System.Collections;

Przestrzeń nazw Conchango
{
    /// <Podsumowanie>
 /// </Podsumowanie>
 Klasa ManualFolderUpdate
    {
        statyczne nieważne Główne(ciąg[] argumenty)
        {
            ciąg msh = "ManualFolderUpdate (v1.0): "; // msh = "Nagłówek wiadomości"

 Konsoli.WriteLine(msh + "Zaczyna.  Ostatnio zmodyfikowano 08/04/08.");

            ciąg URL = http://localhost/xyzzy;

            przy użyciu (SPSite oSPSite = Nowy SPSite(adres URL))
            {

                przy użyciu (Sieci Web programu SharePoint oSPWeb = oSPSite.OpenWeb())
                {
                    SPList biblioteki dokumentów = oSPWeb.Lists["Dokumenty"];

                    Konsoli.WriteLine(msh + "Got biblioteki dokumentów.");

                    Konsoli.WriteLine(msh + "Doc lib liczba elementów: [" + docLib.ItemCount + "].");

                    int Identyfikator folderu = 0;
                    ciąg NewStatus = "xyzzy";

                    Identyfikator folderu = System.Konwersja.ToInt32(argumenty[0].ToString());
                    Konsoli.WriteLine("Szukam folderu dla elementu: [" + Identyfikator folderu + "].");

                    SPListItem li = docLib.GetItemById(Identyfikator folderu);

                    SPFolder thisItemFolder = li.File.ParentFolder;

                    Konsoli.WriteLine(msh + "Dostał po folderze nadrzędnym.");

                    NewStatus = args[1].ToString();
                    Konsoli.WriteLine("Ustawienie stanu [" + NewStatus + "].");

                    Konsoli.WriteLine("Naciśnij przycisk return, aby zatwierdzanie aktualizacji lub CTRL-C, aby przerwać.");

                    Konsoli.GNU ReadLine();

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

                    Konsoli.WriteLine(msh + "Zakończeniu aktualizacji do folderu.  Zamykania.");

                } // za pomocą SPWeb

            } // za pomocą SPSite

 Konsoli.WriteLine(msh + "Gotowy.");

        } // Główne

    } // Klasa darmo
} // Przestrzeń nazw
</kod>

</koniec>

Subskrybowanie mój blog.

Technorati znaczniki:

Ukrywanie akcji niestandardowych w programie SharePoint

Kilka miesięcy temu, podczas pracy nad projektem dla klienta, Stworzyłem funkcję. Wśród innych rzeczy, Ta funkcja zdefiniowanych akcji niestandardowej (te są wyświetlane w obszarze Ustawienia strony). Jedynym celem tego niestandardowe działania było udowodnić mi, że aktywacja funkcji działa zgodnie z oczekiwaniami. Zasadniczo, Używałem go w postaci surowej debugowania.

Dużo do mojego wstydu, Ten artefakt debugowania wykonane drogę od dev UAT i produkcji, zanim ktoś dostał wokoło wobec pytania, "co to jest ten link xyzzy?"

Do tej pory, Jesteśmy w produkcji i naprawdę nie chcesz odinstalować funkcji, naprawić elements.xml i następnie ponownie zainstalować.

Todd bardziej wskazał łatwy sposób sobie z tym poradzić. W jego słowach:

"CustomActions nie zostaną skopiowane do bazy danych, są one odczytywane bezpośrednio z pliku Elements.xml i kopiowane do stanu aplikacji w czasie wykonywania. Tak, nie musisz wyłączyć, odinstalować, Ponowna instalacja, i ponownie uaktywnić funkcję, aby usunąć CustomAction. Po prostu usunąć go z pliku Elements.xml i recyklingu puli aplikacji(s) dokonane. Następnym razem tej funkcji jest w zakresie, nie zobaczysz już CustomAction."

Podążyłem za jego instrukcje i, Oczywiście, pracują.

W moim przypadku, to jest w departamencie poziomu instalacji z tylko jednym WFE. Jeśli znajdziesz się z tego problemu w przyszłości, a z wielu WFE, Wierzę, że będziesz musiał zmienić w każdym.

</koniec>

Subskrybowanie mój blog.

Quick Fix: Dostęp do witryny programu SharePoint zgłasza [HttpException (0x 80004005): Upłynął limit czasu żądania.]

Jeden z moich kolegów programistów pracuje nad projektem w tym tygodniu i wpadłem na problem limit czasu podczas pracy na budowie niektórych szalone składnika web part. Jego składników web part została dobrze, ale "nagle" niepowiązanych witryny stał się bardzo slow i często limit z ten błąd:

[HttpException (0x 80004005): Upłynął limit czasu żądania.]

Zalogowałem się i zobaczył, że kilka innych witryn były dobrze. Podejrzewałem, że istnieją pewne ukryte składników web Part na stronie i za pomocą trusty ?zawartość = 1 techniki debugowania, W rzeczywistości znaleźć 11 składniki Web Part na stronie, tylko dwa z nich były widoczne. Jeszcze lepiej (z perspektywy let's-hope-I-find-something-ugly-here-that-I-can-fix), trzy z tych części zamkniętej sieci web miał nazwę "Błąd".

Po usunięciu tych składników web Part (która sama miała zaskakująco dużo czasu) i to rozwiązać problem. Na dziś 🙂

</koniec>

Subskrybowanie mój blog.

Technorati znaczniki:

Wywoływania usługi sieci Web usługi SSRS z WSS / Mech w formularzach środowiska

Musieliśmy wywołać "CreateSubscription" Metoda na SSRS usługa sieci web, która jest obsługiwana w FBA zarządzanym środowisku, mech z niestandardowego składnika web part. Mamy trzymany dostawanie odmiany:

  • 401: Nie dozwolone
  • Obiekt przeniósł się

"Obiekt przeniósł się" wiadomość została najbardziej interesujące, bo mówił, że "obiekt" (Nasze usługi SSRS) przeniósł"" na login.aspx. Oznaczało to wyraźnie, że miał jakiś problem uwierzytelnianie.

W końcu sobie sprawę, że Zakładka wpis w blogu przez Robert Garret, która określała sposób wywoływania usługa sieci web WSS/mech ogólnego życia wewnątrz środowiska FBA. Należy zauważyć, że nie można połączyć bezpośrednio do artykułu (jak z 06/09/08) bo chce do uwierzytelnienia. Mogę podać link prowadzi do "wszystkie posty" widok i można zlokalizować określonego artykuł wyszukując "Uzyskiwanie dostępu do usług sieci Web mech przy użyciu uwierzytelniania opartego na formularzach".

Oto kod, który pracował dla nas:

ReportingService2006 r = pusty; 
// Uwierzytelnienia Auth uwierzytelnianie = Nowy Uwierzytelnianie(); 
źrURL = "http://URL/_vti_bin/Authentication.asmx";
źrCookieContainer =
Nowy CookieContainer();
LoginResult wynik = auth.Zgłoś się do systemu("nazwa użytkownika", "hasło");
Jeśli (wynik.Kod błędu == LoginErrorCode.NoError) 
{
// Błąd nie, tak dostać ciasteczka.
Ciasteczka CookieCollection = auth.CookieContainer.GetCookies(Nowy URI(źrAdres URL));
Cookie authCookie = pliki cookie[wynik.Nazwę CookieName];
r =
Nowy ReportingService2006();
RS.URL =
"http://Server/_vti_bin/reportserver/ReportService2006.asmx";
RS.CookieContainer =
Nowy CookieContainer();
RS.CookieContainer.Add(authCookie);
}
Spróbuj
{
  RS.CreateSubscription(Raport, extSettings, desc, eventType, matchData, parameters1);
}
połów (Wyjątek ex)
{
  Console.WriteLine(ex.Message.ToString());
}

Tłumaczę rzeczy do pracy jak to:

  • Naszej strony sieci web musi dial-up usługę uwierzytelniania i powiedzieć, "Hej, Tony, to mnie!".
  • Usługa uwierzytelniania odpowiedzi, mówiąc:, "Hej, Wiem, że. Jak są dzieci? Tutaj jest token."
  • Nazywamy się usługa SSRS i powiedzieć, "Tony wysłał mi, Tutaj jest tokenem."

</koniec>

Subskrybowanie mój blog.

Szybkie i proste: Witrynę sieci Web przy użyciu modelu obiektowego programu SharePoint W języku C#

Ja wypróbowany szukając mały fragment kodu, który pokaże jak można utworzyć nowe SPWeb w zbiorze witryn. Nie znalazłem to jak szybko i łatwo, jak się spodziewałem, więc myślałem, że mogę chcieliby slap razem mały wpis na temat.

Kod ten tworzy nową stronę Wiki:

 SPSite siteCollection;

    siteCollection = Nowy SPSite("http://conchang-o9l8qi");

    Sieci Web programu SharePoint w = siteCollection.OpenWeb();

    w.Webs.Add("xyzzy", "xyzzy tytuł",
        "opis xyzzy", 1033, SPWebTemplate.WebTemplateWIKI, FAŁSZ, FAŁSZ);

Moje początkowe wyszukiwania nie powiodło się, ponieważ ja był patrząc pod kątem zwroty jak "przepisy witryny sieci web za pomocą modelu obiektów programu sharepoint" i tym podobne.

Jeśli możesz Szukaj dla "Webs.Add()", znajdziesz szereg bardzo przydatnych wpisów, Artykuły MSDN i dokumentację zestawu SDK, że go w głębi na ten temat. Zdecydowanie polecam Ta strona.

</koniec>

Subskrybowanie mój blog.

Technorati znaczniki: