Archivy kategorií: Rozvoj služby SharePoint

Bambus kalendář interakce s SharePoint způsobí, že "došlo k neočekávané chybě"

Dnes, Pracoval jsem v prostředí, které používá webovou část kalendář bambus pro lepší spolupráci. Tato standardní střední/malé farmy s dvěma zatížení vyrovnávání WFEs, "aplikační server" pro indexování a aplikace InfoPath a clustery SQL back-end.

Klient nainstalovaný nějaký software pro obnovu po havárii do jednoho z WFEs a to mělo za následek zlomený WFE pro konkrétní web v kolekci webů. Kdykoliv, Vyrovnávání zatížení ukázal na postižené WFE a tento web, uživatelé viděli převážně prázdná bílá obrazovka s větou "došlo k neočekávané chybě". Žádné další informace, které ukázaly, právě tato věta.

Ptali se mě na to podívat. Snadno reprodukovat problém a pak přidá ?obsah = 1 na konec URL. To je, jak jsem se dozvěděl, že oni byli používání webové části bambus. Vrátil jsem se ke stránce a nyní, náhle, To mi ukázal pěkně spořádané chybová zpráva:

image

Já nevím, co se děje nebo co jsem udělala řízené chybová zpráva zobrazit jiné než připojení ?obsah = 1 bit řetězce dotazu.

To je pravděpodobně případ velmi vzácné okraj ale pokud dostanete zprávu, "Došlo k neočekávané chybě" pokračovat a přidat ?obsah = 1 do řetězce dotazu a uvidíme, kam to vede.

</Konec>

Přihlásit se na mém blogu.

Za mnou na Twitter na http://www.twitter.com/pagalvin

Doplněk Technorati značky: ,

Pomocí reflektoru na Microsoft.SharePoint.dll

Reflektor Redgate .NET Michael Blumenthal stočily článek o výstrahách a pohledy ("Která zobrazení lze použít při vytváření oznámení ?"), což je zajímavý sám o sobě. Avšak, Byl jsem ještě více zajímat, jak metodicky prochází procesem používání si Redgate .NET Reflector. Krok za krokem, On ukazuje, jak používat tento nástroj vypátrat jak SharePoint určuje, zda zobrazit na seznamu by měl být "subscribable" pro nedostatek lepšího slova (vysvětluje to mnohem lépe než já 🙂 ).

V tomto bodě v éře SharePoint, máte téměř hluchý a slepý, aby nebylo slyšet nebo číst o použití tohoto nástroje. Má moderní věci a můj vlastní pocit je, že to je v mnoha ohledech nástrojem poslední záchrany. Avšak, Pokud si myslíte, že ji potřebují, ale opravdu nevím jak, Michael je psát-up se jeví jako skvělý tutorial na toto téma.

</Konec>

Přihlásit se na mém blogu.

Za mnou na Twitter na http://www.twitter.com/pagalvin

Doplněk Technorati značky: , ,

Řazení položek kalendáře v zobrazení Kalendář

Já používám kalendář ke sledování panelové diskuse na daný den. Mám dvě relace: ráno a odpoledne. Chci vytvořit zobrazení, které zobrazuje ranní relace pouze abecedně seřazeny pomocí ID relace. To je trochu obtížné dosáhnout (Pokud já chybit něco skutečné jasné).

Můžete snadno vytvořit filtrované zobrazení obsahující jen ten den události. Kalendář se zobrazí všechny tyto události a pokud všichni berou umístit na stejnou hodinu, To je vedle sebe uvádí v patici hodiny. To je super. Nejtěžší je, že, ve výchozím nastavení, to chce seznam je ve formátu ID. Tak, když přidám "Session 02" a pak "Session 01" do kalendáře, ukazuje, jak je v tomto pořadí (tj, Relace 02 a pak Session 01). Chcete-li je do seznamu v pořadí ID relace, Myslím, že vyzkoušet tyto věci:

  1. Konfigurace zobrazení, pomocí webového uživatelského rozhraní. Bez štěstí. Neexistují žádné možnosti řadit položky tímto způsobem.

    Vzhledem k tomu, že to nefungovalo, Já jsem teď doufal, že je dotaz CAML někde vevnitř, který umožní mi přepsat řazení. CQWP umožňuje mě přesvědčte o změně, Možná kalendář bude stejně?

  2. Upravit webové části, Podívejte se na "export" funkce a … BZZZT! Nelze exportovat své XML. Neexistuje žádná možnost exportu.

    Jsem stále drží naději, že mohu najít a změnit některé dotaz CAML. Vzhledem k tomu, že nelze exportovat webovou část, To ponechává SharePoint Designer.

  3. Přidat webovou část kalendář místo izolovaný prostor a otevřít tento web pomocí aplikace SharePoint Designer. Dívám se na značky pro webové části a najít, co hledám. To zakódoval šílenství, ale je to tam: "<ListViewXml …. >kódované šílenství</ListViewXml>". Konkrétně, tam je tento skvost:

<Dotaz>
<Kde>
<DateRangesOverlap>
<FieldRef název = "EventDate" />
<FieldRef jméno = "Datum_ukončení" />
<FieldRef název = "RecurrenceID" />
<Typ hodnoty = "DateTime">
<Měsíc />
</Hodnota>
</DateRangesOverlap>
</Kde>
<Řadit podle><FieldRef název = "Session_x0020_ID" /></Řadit podle>
</Dotaz>

(Jsem dekódovala &lt;si a &gt a rozdělit je na více řádků pro přehlednost).

Přidat <Řadit podle> bit a nyní seřadí podle ID relace, není vnitřní seznam ID položky.

GIGANTICKÉ tip o’ klobouk Becky Isserman pro její komentář k blogu Isha Sagi: http://www.sharepoint-tips.com/2008/07/caml-sorting-by-file-name.html. Já bych dal <Řadit podle> na správném místě bez její komentáře.

Doufám, že psát jasněji se snímky obrazovky brzy, ale v případě, že jsem nikdy neudělal, alespoň jsem udělal tolik.

</Konec>

Doplněk Technorati značky: , , ,

Funkce služby SharePoint & Správa řešení — Nezapomeňte U v CRUD (nebo D pro tuto záležitost)

Společně trávíme hodně času přemýšlet o řešení SharePoint — jak je vytvořit, který nástroj máte použít, Co se stane, když se jim nepodaří zavést, úlohy časovače, obory, atd. Trávíme tolik času přemýšlet o počáteční bity, které je snadné zapomenout, že musíme zatlačit je stejně. Navíjecí řešení je pravděpodobně mnohem obtížnější, z hlediska koncepčního návrhu, než jejich nasazení. Nasazení je v podstatě záležitost kuchařka. Obvykle, nainstalovat funkci, Možná mají funkce přijímače načíst data do seznamu, takové věci. Avšak, navíjení je potenciálně mnohem složitější.

Dané řešení může vytvořit artefakty, jako jsou tyto:

  • Typ obsahu
  • Definice seznamu
  • Definice webu
  • Data v seznamu
  • Dokonce i přijímače
  • Formuláře aplikace InfoPath

Seznam pokračuje.

Sice je to očividně důležité navrhnout řešení, která konkretizuje ty artefakty správně, je to stejně důležité zvážit aktualizaci a odstranění případů. Je-li vaše řešení vytvoří nový seznam a naplní tento seznam s daty, Co se stane, když řešení je zasunuto? V některých případech, seznam by měl být odstraněn. V ostatních případech, To by mělo být zachováno pro historické účely. Vaše obchodní požadavky vás dovede k správné rozhodnutí.

Chcete-li pomoci s tímto, Vytvořte matici, která obsahuje každý artefakt, který vaše řešení nasazuje na SharePoint. Seznam tří sloupců na artefakt, jeden pro vytvoření, aktualizace a odstranění. Pro každý případ, určit správný výsledek pro tuto operaci.

Tento druh analýzy je samozřejmě nejlépe provést dříve, než řešení je stále nasazen na farmu serveru SharePoint. Avšak, stejně jako kouření, není nikdy není pozdě začít dělat věci správně. Vytvoření této matice a vytvořit plán pro řešení chybějící aktualizace či odstranění scénáře. To může být těžké problém k řešení, ale aspoň budete mít dal rámeček kolem problému.

</Konec>

Přihlásit se na mém blogu.

Za mnou na Twitter na http://www.twitter.com/pagalvin

Doplněk Technorati značky:

Quick Fix: Webové služby této interakce s SharePoint, InvalidOperationException

Před milionem let, Pomáhal jsem vyvinul webová služba, která byla vyvolána prostřednictvím vlastní akce pracovního postupu aplikace SharePoint Designer. Tento týden, Klient chtěl přesunout do výroby (Konečně!) Takže jsme.

Vlastní akce fungovalo, Ale ne webové služby, které je vyvoláno, dává nám tuto chybu:

Výjimka: Tuto operaci lze provést pouze na počítači, který je připojen k serverové farmě uživatelé, kteří mají oprávnění na serveru SQL Server, číst z databáze konfigurace. Připojit tento server k serverové farmě, použít SharePoint Products Průvodce konfigurací a technologií, nachází se v nástroje pro správu v nabídce Start.
na Microsoft.SharePoint.Administration.SPWebApplication.Lookup(RequestUri identifikátoru URI)

Ukazuje se, že jsem zapomněl přidat službu SharePoint fondu aplikací ve službě IIS. Jakmile jsem to udělal, fungovalo to dobře.

MSDN fórum postilion mi dala vodítko, co jsem potřeboval: http://social.msdn.microsoft.com/Forums/en-US/sharepointdevelopment/thread/2c97c004-7118-4e06-a62c-b2b0ac07ac99

</Konec>

Přihlásit se na mém blogu.

Následujte mě na štěbetat: http://twitter.com/pagalvin

Doplněk Technorati značky:

Rychlé a snadné: Získat SPFolder SPItemList

Pořád utíkat do tohoto problému a Google nikdy zdá se pochopit, co chci dělat, Tak jsem si myslel, že by to napsat.

Dělala jsem hodně přijímače události ladění v minulý týden nebo dva. ER je definována proti knihovnu dokumentů. Jednotlivé položky v knihovně dokumentů úzce souvisí s jejich nadřazených složek. Tak, Jsem pořád složku položky pro různé manipulace. Při ladění, Potřeboval jsem aktualizovat metadata složku pro konkrétní položku ID vím.

Zde je trochu konzolové aplikace (určeno pro provoz na serveru ve farmě) to vyžaduje dva argumenty: ID položky a hodnotu přiřadit k poli, "Stav schválení". Těžké kódy spoustu věcí a neobsahuje kontrolu chyb.

Kód vyhledá naprogramováno Web, Získá naprogramováno dokumentů knihovny a pak najde uvedené položky. Pak najde nadřazenou složku dané položky a přiřadí hodnotu stavu.

Klíčovým ponaučením pro mě je, že SPItem nedostane přístup ke složce. Musíte použít SPListItem.File.

Je-li někdo stará nabízet kritika nebo navrhnout lepší způsob, jak dostat složky položky, Prosím, zanechte komentář.

<kód>
použití Systém;
použití System.Collections.Generic;
použití System.Text;
použití Microsoft.SharePoint;
použití System.Collections;

obor názvů Conchango
{
    /// <Shrnutí>
 /// </Shrnutí>
 Třída ManualFolderUpdate
    {
        statický void Hlavní(řetězec[] argumenty)
        {
            řetězec MSH = "ManualFolderUpdate (v1.0): "; // MSH = "záhlaví zprávy"

 Konzola.WriteLine(MSH + "Rozběhu.  Naposledy byl upraven na 08/04/08.");

            řetězec URL = http://localhost/xyzzy;

            použití (SPSite oSPSite = nové SPSite(Adresa URL))
            {

                použití (SPWeb oSPWeb = oSPSite.OpenWeb())
                {
                    SPList.Update() knihovny dokumentů = oSPWeb.Lists["Dokumenty"];

                    Konzola.WriteLine(MSH + "Dostal do knihovny dokumentů.");

                    Konzola.WriteLine(MSH + "Doc lib počet položek: [" + docLib.ItemCount + "].");

                    int FolderID = 0;
                    řetězec NewStatus = "xyzzy";

                    FolderID = systém.Převést.ToInt32(argumenty[0].ToString());
                    Konzola.WriteLine("Hledání složku pro položku: [" + FolderID + "].");

                    SPListItem li = docLib.GetItemById(FolderID);

                    Složka SPFolder thisItemFolder = li.File.ParentFolder;

                    Konzola.WriteLine(MSH + "Dostal nadřazenou složku.");

                    NewStatus = args[1].ToString();
                    Konzola.WriteLine("Nastavení stavu na [" + NewStatus + "].");

                    Konzola.WriteLine("Press návrat k potvrzení aktualizace nebo CTRL-C přerušit.");

                    Konzola.ReadLine();

                    thisItemFolder.Item["Stav schválení"] = NewStatus;
                    thisItemFolder.Item.Update();

                    Konzola.WriteLine(MSH + "Dokončil aktualizaci složky.  Ukončení.");

                } // pomocí objektu SPWeb

            } // použití SPSite

 Konzola.WriteLine(MSH + "Skončil.");

        } // Hlavní

    } // Třída foldersync
} // obor názvů
</kód>

</Konec>

Přihlásit se na mém blogu.

Doplněk Technorati značky:

Skrytí vlastní akce služby SharePoint.

Před několika měsíci, při práci na projektu pro klienta, Vytvořil jsem funkce. Mimo jiné, Tato funkce definována vlastní akce (tyto zobrazeny v části Nastavení webu). Jediným důvodem pro tuto vlastní akci bylo prokázat, že aktivace funkce pracuje podle očekávání. V podstatě, Použil jsem ji jako provizorní ladění.

Mnohé mé rozpaky, Toto ladění artefakt dělal jeho cestu od dev UAT a výrobu dříve, než se někdo dostal k ptát, "Co je toto spojení xyzzy?"

Nyní, jsme v produkci a já opravdu nechci odinstalovat funkci, opravit elements.xml a znovu nainstalujte.

Todd pochmurnější poukázal na to snadný způsob, jak zvládnout. Podle jeho slov:

"CustomActions – nejsou zkopírovány do databáze, jsou přímo z souboru Elements.xml a zkopírovány do stavu aplikace za běhu. Tak, není nutné deaktivovat, odinstalování, znovu nainstalovat, a znovu aktivujte funkci odstranit CustomAction. Stačí odebrat ze souboru Elements.xml a fond aplikací recyklovat(s) uskutečněných. Při dalším spuštění funkce je v rozsahu, už nebudou vidět CustomAction."

Sledoval jsem jeho pokyny a, Samozřejmě, pracují.

V mém případě, To je oddělení úrovně instalace s jen jediný WFE. Dostanete-li se tomuto problému v budoucnu a s více WFE, Věřím, že budete muset provést změnu v každém.

</Konec>

Přihlásit se na mém blogu.

Doplněk Technorati značky: ,

Quick Fix: Přístup k webu služby SharePoint vyvolá [HttpException (0x 80004005): Vypršel časový limit žádosti.]

Jeden z mých kolegů vývojář pracuje na projektu tento týden a narazil na problém časový limit při práci na budování nějaké šílené webové části. Jeho webová část byla fajn, Ale "náhle" nezávislý web se stal velmi pomalu a často vypršel s touto chybou.:

[HttpException (0x 80004005): Vypršel časový limit žádosti.]

Přihlášen a viděl, že několik dalších míst byly v pohodě. Jsem podezření, že tam byly nějaké skryté webových částí na stránce a pomocí důvěrník ?Obsah = 1 techniky ladění, Našel jsem ve skutečnosti 11 webové části na stránce, pouze dva z nich byly vidět. Ještě lepší (z pohledu let's-hope-I-find-something-ugly-here-that-I-can-fix), tři z těch zavřené webové části měl název "Error".

Odstranění těchto webových částí (která sama překvapivě dlouho trvalo) a problém vyřešil. Pro dnešek 🙂

</Konec>

Přihlásit se na mém blogu.

Doplněk Technorati značky:

Vyvolání SSRS webové služby WSS / MOSS v prostředí FBA

Potřebovali jsme k vyvolání "CreateSubscription" metodu na webové služby SSRS, která je hostována v FBA spravované prostředí mech z vlastní webové části. Jsme stále dostává variace:

  • 401: Neověřeno
  • Objekt byl přesunut.

"Objekt byl přesunut." Zpráva byla velmi zajímavé, protože se říká, že objekt"" (Naše služba SSRS) "přestěhoval" na login.aspx. Jasně to znamenalo, že jsme měli nějaký problém ověřování.

Nakonec jsem si uvědomil, že jsem měl záložkou blogu od Robert Garret, která popisovala způsob vyvolání webové služby WSS/MOSS všeobecný žijící uvnitř FBA prostředí. Všimněte si, že nemohu odkaz přímo na článek (jako 06/09/08) protože chce ověřit. Spojení, které poskytuji vám přináší všechny příspěvky"" pohled a vy můžete najít konkrétní článek hledání "Přístup k MOSS webové služby pomocí ověřování na základě formulářů".

Zde je kód, který pracoval pro nás:

ReportingService2006 rs = null; 
// Ověřit Ověření auth = nové Ověřování(); 
auth.URL = "http://URL/_vti_bin/Authentication.asmx";
auth.CookieContainer =
nové CookieContainer();
LoginResult výsledek = auth.Přihlášení("ID", "heslo");
Pokud (výsledek.Kód chyby == LoginErrorCode.NoError) 
{
// Žádná chyba, tak se soubory cookie.
CookieCollection soubory cookie = auth.CookieContainer.GetCookies(nové URI(auth.Adresa URL));
Cookie authCookie = soubory cookie[výsledek.CookieName];
RS =
nové ReportingService2006();
RS.URL =
"http://Server/_vti_bin/ReportServer/ReportService2006.asmx";
RS.CookieContainer =
nové CookieContainer();
RS.CookieContainer.Add(authCookie);
}
zkusit
{
  RS.CreateSubscription(zpráva, extSettings, desc, Typ události, matchData, parameters1);
}
Catch (Výjimka ex)
{
  Console.WriteLine(ex.Message.ToString());
}

Pokládám věci takhle pracovat:

  • Naše webová část je třeba službu pro telefonické připojení a říct, "Hej, Tony, To jsem já!".
  • Ověřovací služba odpoví, říká, "Hej, Vím, že jste. Jak se mají děti? Tady je token."
  • Můžeme zavolat služby SSRS a říct, "Tony mi poslal, Tady je token."

</Konec>

Přihlásit se na mém blogu.

Doplněk Technorati značky: , ,

Rychlé a jednoduché: Webový server pomocí služby SharePoint objektového modelu v jazyce C#

Snažila jsem se hledat malý fragment kódu, který by Ukázat, jak lze vytvořit novou SPWeb v kolekci webů. Nenašel jsem ji jako rychle a snadno jak jsem očekával, tak jsem si myslel, že ti naplácám dohromady malý vstup na téma.

Tento kód vytvoří nový web Wiki:

 SPSite siteCollection;

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

    SPWeb w = siteCollection.OpenWeb();

    w.Webs.Add("xyzzy", "xyzzy titul",
        xyzzy popis"", 1033, SPWebTemplate.WebTemplateWIKI, NEPRAVDA, NEPRAVDA);

Moje první hledání se nezdařila, protože jsem hledal fráze jako "vytvořit web pomocí objektového modelu služby sharepoint" a podobně.

Pokud jste Hledat pro "Webs.Add()", najdete řadu velmi užitečné blogu, MSDN články a dokumentaci SDK, které jdou do hloubky na toto téma. Rozhodně doporučuji Tento web.

</Konec>

Přihlásit se na mém blogu.

Doplněk Technorati značky: