Kategoriarkiv: SharePoint-utvikling

Bambus kalenderen samspill med SharePoint forårsaker "en uventet feil oppstod"

I dag, Jeg har jobbet i et miljø som bruker en webdel for bambus kalender for noen bedre samarbeid. Dette en standard middels/liten gård med to balansert WFEs, en "application server" for indeksering og InfoPath og en klyngede SQL tilbake slutten.

Klienten installert noen katastrofe-programvare på en av WFEs og som resulterte i en brukket WFE for et bestemt område i områdesamlingen. Når belastningsfordeling pekte på de berørte WFE og området, brukere så en hovedsakelig tom, hvit skjerm med setningen "det oppstod en uventet feil". Ingen andre info viste, bare den setningen.

De ba meg om å se på det.. Jeg lett reprodusert problemet og lagt en ?innholdet = 1 på slutten av URL-adressen. Dette er hvordan jeg lærte de brukte webdelen bambus. Jeg gikk tilbake til siden og nå, plutselig, Det viste meg en fin ryddig feilmelding:

image

Jeg vet ikke hva som skjedde, eller hva jeg did for å bli kontrollert feilmeldingen for å vise andre enn tilføyer den ?innholdet = 1 bit av spørrestrengen.

Dette er trolig en svært sjeldne kant sak, men hvis du får denne meldingen, "Det oppstod en uventet feil" gå videre og legge ?innholdet = 1 i spørringsstrengen og se hvor det fører.

</slutten>

Abonner på bloggen min.

Følg meg på Twitter på http://www.twitter.com/pagalvin

Technorati Merkelapper: ,

Med Reflector på Microsoft.SharePoint.dll

Redgate .NET Reflector Michael Blumenthal har satt opp en artikkel om varsler og visninger ("Hvilke visninger kan brukes når du oppretter et varsel ?"), som er interessant på egne meritter. Men, Jeg var enda mer interessert i å se hvordan han metodisk går gjennom prosessen med å bruke Redgate's .NET reflektor. Trinn for trinn, Han viser hvordan du bruker dette verktøyet spore hvordan SharePoint bestemmer om en visning på en liste skal være "subscribable" mangel av et bedre ord (he explains this much better than I do 🙂 ).

På dette punktet i SharePoint tid, du må nesten være døve og blinde for har ikke hørt eller lest om hvordan du bruker verktøyet. Det har avanserte ting og min egen følelse er at det er på mange måter et verktøy i siste instans. Men, Hvis du tror du trenger det, men ikke vet hvordan, Michael skrive virker som en stor tutorial på dette emnet.

</slutten>

Abonner på bloggen min.

Følg meg på Twitter på http://www.twitter.com/pagalvin

Technorati Merkelapper: , ,

Sortere elementer i kalenderen i kalendervisningen

Jeg bruker en kalender til å spore panel diskusjoner på en gitt dag. Jeg har to økter: morgen og ettermiddag. Opprett en visning som viser morgenen økter bare alfabetisk via en økt-ID. Dette er litt vanskelig å oppnå (Hvis jeg savnet noe virkelig tydelig).

Jeg kan enkelt lage en filtrert visning viser bare at dagens hendelser. Kalenderen viser alle disse hendelsene og hvis de tar sted samme time, den viser dem side ved side i time-spor. det er supert. Den vanskelige delen er at, som standard, den ønsker å liste dem i ID-format. Så, Hvis jeg legge til "økt 02" og deretter "økt 01" i kalenderen, Det viser dem i den rekkefølgen (dvs., Økt 02 og deretter Session 01). Å liste dem for økt-ID, Jeg tenkte å prøve disse tingene:

  1. Konfigurere visningen med web-brukergrensesnittet. Lykken. Det er ingen alternativer sortere elementer på denne måten.

    Siden det ikke fungere, Jeg er nå håper det er en CAML-spørring et sted i det som vil tillate meg å overstyre Sorter. CQWP lar meg gjøre det type endring, kanskje vil kalenderen også?

  2. Redigere webdelen, se etter en "eksport" funksjonen og … BZZZT! Jeg kan ikke eksportere sin XML. Det er ingen mulighet for eksport.

    Jeg fortsatt holder ut håper at jeg kan finne og endre noen CAML søk. Siden jeg ikke kan eksportere webdelen, som forlater SharePoint Designer.

  3. Jeg legge til webdelen for kalender en sandkasse-området og åpne området ved hjelp av SharePoint Designer. Jeg ser på markeringen for webdelen og jeg finner det jeg leter. Det har kodet galskap, men det er der: "<ListViewXml …. >kodet galskap</ListViewXml>". Spesielt, Det er denne perlen:

<Spørring>
<Der>
<DateRangesOverlap>
<FieldRef Name = "EventDate" />
<FieldRef navn = "EndDate" />
<FieldRef Name = "RecurrenceID" />
<Verditype = "DateTime">
<Måned />
</Verdi>
</DateRangesOverlap>
</Der>
<OrderBy><FieldRef Name = "Session_x0020_ID" /></OrderBy>
</Spørring>

(Jeg har dekodet de &lt;'s og &gt's og dele dem ut på flere linjer for klarhet skyld).

Legge til <OrderBy> litt og nå det sorterer etter økt-ID, ikke interne listeelement-ID.

GIGANTISK tips o’ hatten til Becky Isserman for hennes kommentar til Isha Sagis blogginnlegg: http://www.sharepoint-tips.com/2008/07/caml-sorting-by-file-name.html. Jeg ville ha satt den <OrderBy> på rett sted uten hennes kommentar.

Jeg håper å skrive dette tydeligere med skjermbilder snart, men i tilfelle jeg aldri gjøre, minst gjorde jeg så mye.

</slutten>

Technorati Merkelapper: , , ,

SharePoint-funksjoner & Løsninger Management — Ikke glem U i CRUD (eller D for saks skyld)

Vi bruker kollektivt mye tid på å tenke om SharePoint-løsninger — hvordan du oppretter dem., hvilke verktøy å bruke, Hva skjer når de ikke klarer å distribuere, tidtakerjobber, omfang, osv.. Vi bruker så mye tid på å tenke om up-front biter som det er lett å glemme at vi må trekke dem også. Trekke løsninger er sannsynligvis vanskeligere, fra en konseptuell design perspektiv, enn å deployere dem. Distribusjon er i utgangspunktet en kokebok affære. Vanligvis, installere en funksjon, kanskje har en funksjonsmottakeren laste inn noen data i en liste, den slags. Men, trekke er potensielt mer komplekse.

En gitt løsning kan skape gjenstander som disse:

  • Innholdstype
  • List definisjon
  • Områdedefinisjonen
  • Data i en liste
  • Selv mottakere
  • InfoPath-skjemaer

Listen fortsetter.

Mens det er åpenbart viktig å utforme en løsning starter som disse gjenstander riktig, Det er like viktig å vurdere oppdateringen og slette tilfeller. Hvis løsningen oppretter en ny liste og fyller den listen med data, Hva skjer når løsningen er trukket tilbake? I noen tilfeller, listen skal slettes. I andre tilfeller, Det bør være intakt for historiske formål. Dine forretningskrav vil lede deg til den riktige avgjørelsen.

Å hjelpe med dette, opprette en matrise som viser hver gjenstand løsningen distribuerer til SharePoint. Tre listekolonner per gjenstand, en for Opprett, Update- og delete. For hvert enkelt tilfelle, fastslå riktige utfallet for denne operasjonen.

Denne typen analyse er selvfølgelig best gjøres før løsningen distribueres helt til en SharePoint-farm. Men, som å røyke, Det er aldri for sent for å begynne å gjøre ting riktig. Opprette at matrisen og utvikle en plan for å løse manglende oppdatere/slette scenariene. Det kan være et vanskelig problem å løse, men minst du har satt en boks rundt problemet.

</slutten>

Abonner på bloggen min.

Følg meg på Twitter på http://www.twitter.com/pagalvin

Technorati Merkelapper:

Quick Fix: Webtjenester som samhandle med SharePoint, InvalidOperationException

En million år siden, Jeg hjalp utviklet en webtjeneste som ble startet via en egendefinert handling for en SharePoint Designer arbeidsflyt. Denne uken, klienten ønsket å flytte det til produksjon (Endelig!) så vi gjorde.

Den egendefinerte handlingen arbeidet fin, men webtjenesten det aktiveres ikke, gi oss denne feilen:

System.InvalidOperationException: Denne operasjonen kan bare utføres på en datamaskin som er koblet til en serverfarm, av brukere som har tillatelser i SQL Server å lese fra konfigurasjonsdatabasen. Å koble serveren til serverfarmen, bruke SharePoint-produkter og teknologier, på startmenyen i Administrative verktøy.
ved Microsoft.SharePoint.Administration.SPWebApplication.Lookup(URI-requestUri)

Viser seg at jeg glemte å legge til tjenesten til SharePoint-programutvalg i IIS. Når jeg gjorde det, den arbeidet fin.

Dette MSDN foruminnlegg ga meg den ledetråd jeg trengte: http://social.msdn.microsoft.com/Forums/en-US/sharepointdevelopment/thread/2c97c004-7118-4e06-a62c-b2b0ac07ac99

</slutten>

Abonner på bloggen min.

Følg meg på twitter: http://twitter.com/pagalvin

Technorati Merkelapper:

Rask og enkel: Få SPFolder av SPItemList

Jeg fortsette å kjøre inn i denne problem og Google synes aldri å forstå hva jeg vil gjøre, så jeg skjønte ville jeg skrive dette.

Jeg har gjort mye av hendelsen mottaker feilsøking i den siste uken eller to. ER er definert mot et dokumentbibliotek. Enkeltelementene i dokumentbiblioteket er tett knyttet til de overordnede mappene. Så, Jeg får alltid mappen for varen for ulike manipulasjoner. Mens feilsøking, Jeg trengte å oppdatere metadataene for en mappe for en bestemt vare der jeg vet-IDEN.

Her er en liten Konsollprogram (utformet for å kjøre på en server i farmen) som tar to argumenter: IDEN for et element og en verdi skal tilordnes et felt, "Godkjenningsstatus". Det vanskelig koder en masse ting og har ingen feilkontroll.

Koden slår opp et hardkodet område, får en hard kodet dokumentbiblioteket og finner deretter angitt. Deretter finner den overordnede mappen til elementet og tilordner statusverdien.

Den viktigste lærdommen for meg er at SPItem ikke får tilgang til mappen. Du må bruke SPListItem.File.

Hvis noen bryr seg å tilby en kritikk eller foreslå en bedre måte å få mappen for et element, Legg igjen en kommentar.

<koden>
ved hjelp av Systemet;
ved hjelp av System.Collections.Generic;
ved hjelp av System.Text;
ved hjelp av Microsoft.SharePoint;
ved hjelp av System.Collections;

navneområdet Conchango
{
    /// <Sammendrag>
 /// </Sammendrag>
 klassen ManualFolderUpdate
    {
        statisk ugyldige Main(streng[] argumenter)
        {
            streng msh = "ManualFolderUpdate (v1.0): "; // msh = "meldingshodet"

 Konsollen.WriteLine til(msh + "Starter.  Jeg ble sist endret på 08/04/08.");

            streng URL = http://localhost/xyzzy;

            ved hjelp av (SPSite oSPSite = nye SPSite(URL-adresse))
            {

                ved hjelp av (SPWeb oSPWeb = oSPSite.OpenWeb())
                {
                    SPList docLib = oSPWeb.Lists["Dokumenter"];

                    Konsollen.WriteLine til(msh + "Fikk dokumentbiblioteket.");

                    Konsollen.WriteLine til(msh + "Doc lib antall elementer: [" + docLib.ItemCount + "].");

                    Int Mappe-ID for = 0;
                    streng NewStatus = "xyzzy";

                    Mappe-ID for = System.Konvertere.ToInt32(argumenter[0].ToString());
                    Konsollen.WriteLine til("Søker mappen for varen: [" + Mappe-ID for + "].");

                    SPListItem Li = docLib.GetItemById(Mappe-ID for);

                    SPFolder thisItemFolder = li.File.ParentFolder;

                    Konsollen.WriteLine til(msh + "Har den overordnede mappen.");

                    NewStatus = args[1].ToString();
                    Konsollen.WriteLine til("Sette status til [" + NewStatus + "].");

                    Konsollen.WriteLine til("Trykk gå tilbake til å begå oppdateringen eller CTRL   C for å avbryte.");

                    Konsollen.ReadLine();

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

                    Konsollen.WriteLine til(msh + "Fullført oppdateringen av mappen.  Avslutter.");

                } // ved hjelp av SPWeb

            } // ved hjelp av SPSite

 Konsollen.WriteLine til(msh + "Ferdig.");

        } // Main

    } // klassen foldersync
} // navneområdet
</koden>

</slutten>

Abonner på bloggen min.

Technorati Merkelapper:

Skjule egendefinerte handlinger i SharePoint

Flere måneder siden, mens du arbeider på et prosjekt for en klient, Jeg opprettet en funksjon. Blant annet, som har definert en egendefinert handling (disse vises under innstillinger for webområde). Den eneste hensikten med denne egendefinerte handlingen var å demonstrere for meg at funksjonen aktivisering jobbet som forventet. I utgangspunktet, Jeg brukte det som en grov form for feilsøking.

Mye til min forlegenhet, Denne debugging gjenstand gjort sin vei fra dev UAT og produksjon før noen fikk rundt for å spørre, "Hva er lenken xyzzy?"

Nå, Vi er i produksjon og jeg virkelig ønsker ikke å avinstallere, fastsette elements.xml og deretter installere.

Todd Bleaker pekte på en enkel måte å håndtere det. I hans ord:

"CustomActions kopieres ikke til databasen, de leses direkte fra filen Elements.xml og kopiert til søknaden staten under kjøring. Så, du trenger ikke å deaktivere, Avinstaller, installere, og aktivere funksjonen for å fjerne den (CustomAction). Bare fjerne den fra filen Elements.xml og resirkulere applikasjonsutvalget(s) tegnet. Neste gang funksjonen er i omfang, du se ikke lenger det (CustomAction)."

Jeg fulgte hans instruksjoner og, selvfølgelig, de fungerer.

I mitt tilfelle, Dette er en avdeling nivå installasjon med bare en enkelt WFE. Hvis du befinner deg med dette problemet i fremtiden og flere WFE, Jeg tror du må foreta endringen i hver.

</slutten>

Abonner på bloggen min.

Technorati Merkelapper: ,

Quick Fix: Tilgang til SharePoint-området kaster [HttpException (0x 80004005): Forespørselen ble tidsavbrutt.]

En av mine utvikler kolleger jobbet på et prosjekt denne uken og løp inn i en timeout problem mens du arbeider på å bygge noen crazy webdel. Hans webdelen var bra, men "plutselig" en ikke-relatert nettsted ble veldig sakte og ofte tidsavbrutt med denne feilen:

[HttpException (0x 80004005): Forespørselen ble tidsavbrutt.]

Jeg logget på og så at flere andre nettsteder var bra. Jeg mistenkte at det var noen skjulte webdeler på siden og bruke trofaste ?innholdet = 1 debug teknikk, Jeg gjorde faktisk finner 11 webdeler på siden, bare to av dem ble synlig. Enda bedre (fra et let's-hope-I-find-something-ugly-here-that-I-can-fix perspektiv), tre av de lukkede webdelene hadde et navn på "Feil".

Jeg slettet webdelene (som selv tok en overraskende lang tid) og det løste problemet. For today 🙂

</slutten>

Abonner på bloggen min.

Technorati Merkelapper:

Starte SSRS webtjenester fra WSS / MOSS i FBA-miljø

Vi måtte starte "CreateSubscription" metoden på en SSRS webtjeneste som er lagret i et FBA klarte MOSS miljø fra en tilpasset webdel. Vi holdt får varianter av:

  • 401: Ikke godkjent
  • Objeket er flyttet

"Objektet flyttes" meldingen var mest interessant fordi det sa at det "objektet" (tjenesten SSRS) "flyttet" til login.aspx. Dette åpenbart ment vi hadde noen form for godkjenning problem.

Jeg innså senere at jeg hadde bokmerkede en bloggoppføring av Robert Garret som beskrevet hvordan starte en generelt WSS RUNDPINNE webtjeneste lever inne et FBA-miljø. Merk at jeg ikke kan koble direkte til artikkelen (som 06/09/08) fordi den ønsker å godkjenne. Koblingen jeg gi bringer deg til en "alle innlegg" og du kan finne bestemte artikkelen ved å søke etter "Tilgang MOSS Web Services bruker skjemagodkjenning basert".

Her er koden som fungerte for oss:

ReportingService2006 rs = null; 
// Godkjenne Godkjenning auth = nye Godkjenning(); 
autentisering.URL = "http://URL/_vti_bin/Authentication.asmx";
autentisering.CookieContainer =
nye CookieContainer();
LoginResult resultat = autentisering.Logg inn("bruker-ID", "passord");
Hvis (resultatet.ErrorCode == LoginErrorCode.NoError) 
{
// Ingen feil, så får cookies.
CookieCollection cookies = autentisering.CookieContainer.GetCookies(nye URI(autentisering.URL));
Cookie authCookie = informasjonskapsler[resultatet.CookieName];
RS =
nye ReportingService2006();
RS.URL =
"http://Server/_vti_bin/reportserver/ReportService2006.asmx";
RS.CookieContainer =
nye CookieContainer();
RS.CookieContainer.Add(authCookie);
}
Prøv
{
  RS.CreateSubscription(rapporten, extSettings, DESC, Hendelsestype, matchData, parameters1);
}
fange (Unntak ex)
{
  Console.WriteLine(ex.Message.ToString());
}

Jeg tolke ting til å fungere som dette:

  • Våre webdelen må slå godkjenningstjenesten og si, "Hei, Tony, Det er meg!".
  • Godkjenningstjenesten svar sa, "Hei, Jeg vet du. Hvor er barna? Her er et token."
  • Vi kaller opp tjenesten SSRS og si, "Tony sendte meg, Her er tokenet."

</slutten>

Abonner på bloggen min.

Technorati Merkelapper: , ,

Rask og enkel: Et Web-område som bruker SharePoint-objektmodellen i C#

Jeg forsøkt forskende for en liten bit-koden som skal vise hvordan jeg kan lage en ny SPWeb i en områdesamling. Jeg fant det som raskt eller lett som jeg forventet så jeg tenkte jeg ville klapse sammen en liten post om emnet.

Denne koden skaper en ny Wiki-side:

 SPSite siteCollection;

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

    SPWeb w = siteCollection.OpenWeb();

    w.Webs.Add("xyzzy", "xyzzy tittel",
        "xyzzy beskrivelse", 1033, SPWebTemplate.WebTemplateWIKI, USANN, USANN);

Min første søk mislyktes fordi jeg var på utkikk etter fraser som "klargjøre et webområde som bruker sharepoint-objektmodellen" og lignende.

Hvis du Søk for "Webs.Add()", du finner en rekke svært nyttig bloggen, MSDN-artiklene og SDK-dokumentasjon som går i dybden på dette emnet. Jeg definitivt anbefale Dette nettstedet.

</slutten>

Abonner på bloggen min.

Technorati Merkelapper: