Arhive de categorii: Dezvoltarea SharePoint

Bambus Calendar interactiunea cu SharePoint provoacă "Eroare neașteptată"

Astăzi, Am fost de lucru într-un mediu care utilizează o parte de web a calendarului de bambus pentru unele colaborare îmbunătăţită. Acest lucru un standard mediu/mic de fermă cu două încărcare echilibrată WFEs, "application server" pentru indexare şi InfoPath şi un SQL grupat înapoi sfârşitul.

Client instalat unele software de recuperare a dezastrelor pe unul din WFEs şi că a dus la un WFE rupt pentru un anumit site din colecția de site-ul. Ori de câte ori încărcăturii de echilibrare a subliniat la afectate WFE şi că site-ul, utilizatorii văzut un ecran alb în mare măsură gol cu teza "Eroare neașteptată". Nici alte informaţii a arătat, doar această frază.

Au cerut-mi să te uiţi la ea. Am reprodus cu uşurinţă problema şi apoi adaugă o ?conţinutul = 1 la sfârşitul URL-ul. Acest lucru este cum am învăţat au folosit partea web bambus. M-am dus înapoi la pagina si acum, brusc, mi-a arătat un mesaj de eroare frumos ordonată:

image

Nu ştiu ce se întâmplă sau ce am făcut pentru a obţine mesajul de eroare controlate pentru a afişa altele decât adăugarea ?conţinutul = 1 pic de şirul de interogare.

Acest lucru este, probabil, un caz de foarte rare marginea dar dacă tu a lua acel mesaj, "Eroare neașteptată" mergeţi mai departe şi adăugaţi ?conţinutul = 1 pentru şirul de interogare şi de a vedea în cazul în care aceasta conduce.

</scop>

Aboneaza-te la blog-ul meu.

Urmaţi-mă pe Twitter, la http://www.twitter.com/pagalvin

Technorati Tags: ,

Utilizând reflectorul pe Microsoft.SharePoint.dll

Redgate .NET Reflector Michael Blumenthal a pus un articol despre alerte şi views ("Vederi care pot fi folosite atunci când creaţi o alertă ?"), care este interesant pe propriile merite. Cu toate acestea, Am fost mai interesat pentru a vedea cum el metodic-plimbări prin procesul de a folosi Redgate pe .NET Reflector. Pas cu pas, El arată cum să utilizaţi acest instrument urmări în jos cum SharePoint determină dacă o Vezi pe o listă ar trebui să fie "subscribable" din lipsa unui cuvânt mai bun (he explains this much better than I do 🙂 ).

În acest moment în epoca SharePoint, tu ar trebui să fie surd şi orb pentru a nu au auzit sau citit despre folosind acest instrument aproape. Acesta a avansat chestii şi propriul meu sentiment este faptul că este în multe feluri un instrument de ultimă. Cu toate acestea, Dacă credeţi că aveţi nevoie de ea dar nu prea stiu cum, Michael pe scrie-up pare a fi o mare tutorial pe acest subiect.

</scop>

Aboneaza-te la blog-ul meu.

Urmaţi-mă pe Twitter, la http://www.twitter.com/pagalvin

Sortare elemente de Calendar în vizualizarea Calendar

I sînt folosire un calendar pentru a urmări panoul de discuţii pe o anumită zi. Am două sesiuni: dimineaţa şi după-amiaza. Vreau să creeze o vizualizare care arată dimineaţă sesiuni doar enumerate în ordine alfabetică, prin intermediul unui ID de sesiune. Acest lucru este un pic dificil de a realiza (dacă am pierdut ceva reale evident).

Pot crea cu uşurinţă o vizualizare filtrată doar acea zi: evenimente. Calendar va afişa toate aceste evenimente şi dacă toate acestea iau loc pe aceeaşi oră, este liste-le alăturate în slotul oră. este extraordinar. Parte complicat este că, în mod implicit, vrea să lista-le în formatul ID. Deci, Dacă aş adăuga "sesiune 02" şi apoi "sesiunea 01" calendarul, Acesta Arată-le în această ordine (adică, Sesiune 02 şi apoi sesiune 01). Pentru a lista-le în sesiune ID comandă, M-am gândit să încerc aceste lucruri:

  1. Configurare Vezi utilizând interfaţa utilizator web. Nu luck. Nu există opţiuni pentru a sorta articole în acest fel.

    Din moment ce care nu au de lucru, Eu sunt acum în speranţa este o interogare de florin undeva în acolo, care va permite-mi pentru a trece peste un fel. CQWP vă permite să mă fac că un fel de schimbare, poate calendar va, precum şi?

  2. Editați partea web, Uita-te pentru un export"" funcţia şi … BZZZT! Eu nu pot exporta sale XML. Nu există nici o opţiune de export.

    Eu sunt încă în exploataţie speranţa că pot găsi şi modifica unele interogare florin. Din moment ce eu nu pot exporta partea web, care lasă SharePoint Designer.

  3. Am adăuga partea web calendarul la un site de nisip şi deschideţi acel site utilizând SharePoint Designer. Mă uit la marcare pentru partea web şi am găsit ceea ce caut. Acesta a codificat nebunie, dar este acolo: "<ListViewXml …. >codificate nebunie</ListViewXml>". În mod specific, există această bijuterie:

<Interogare>
<În cazul în care>
<DateRangesOverlap>
<FieldRef nume = "EventDate" />
<FieldRef nume = "Sfârșit" />
<FieldRef nume = "RecurrenceID" />
<Tipul de valoare = "DateTime">
<Luna />
</Valoarea>
</DateRangesOverlap>
</În cazul în care>
<OrdonareDupă><FieldRef nume = "Session_x0020_ID" /></OrdonareDupă>
</Interogare>

(Eu l-am decodat &lt;pe şi &gt pe şi împărţit-le pentru mai multe linii de dragul clarităţii pe).

Adauga <OrdonareDupă> bit şi acum este felul de sesiune ID, nu ID element listă internă.

Sfat gigantice oana’ pălărie la Becky Isserman pentru ei comentariu la Isha Sagi blog post: http://www.sharepoint-tips.com/2008/07/caml-sorting-by-file-name.html. Nu am pus <OrdonareDupă> în locul potrivit fără ei comentariu.

Sper să scriu acest lucru mai clar cu capturi de ecran în curând, dar în cazul în care nu am face, cel puţin am făcut atât de mult.

</scop>

Caracteristicile SharePoint & Solutii de Management — Nu uitaţi U în CRUD (sau D pentru care contează)

Colectiv ne petrecem o mare de timp de gândire despre soluții SharePoint — Cum de a le crea, ce instrument să folosiţi, ce se întâmplă atunci când nu reuşesc să implementaţi, cronometrate, domenii, etc. Ne petrecem atât de mult timp de gândire despre biţi sus-faţă că este uşor să uităm că avem nevoie pentru a le retrage, precum şi. Rerulare soluţii este, probabil, mai greu, dintr-o perspectivă de proiectare, decât desfăşurarea ei. Implementare este de fapt o afacere carte de bucate. De obicei, o caracteristică a instala, poate ai un receptor de facilitate unele date de încărcare într-o listă, chestii din astea. Cu toate acestea, rerulare este potenţial mai complexe.

O anumită soluţie poate crea artefacte ca aceste:

  • Tip de conținut
  • Lista definiţie
  • Definiția site-ului
  • Date într-o listă
  • Chiar şi receptoare
  • Formularele InfoPath

Lista continuă.

În timp ce este, evident, foarte important pentru a proiecta o soluţie care instantiaza aceste artefacte corect, este la fel de important să ia în considerare actualizarea şi ştergerea cazuri. În cazul în care soluţia creează o nouă listă şi populează această listă cu date, ce se întâmplă atunci când soluţia este retractat? În unele cazuri, lista ar trebui să fie şterse. În alte cazuri, Acesta ar trebui să fie lăsat intact în scopuri istorice. Cerinţele dumneavoastră de afaceri vă vor ghida la Decizia corecta.

Pentru a ajuta cu acest lucru, creează o matrice care listează fiecare artefact solutia ta implementează SharePoint. Lista trei coloane pe artefact, unul pentru a crea, Update şi a şterge. Pentru fiecare caz, determina rezultatul corect pentru această operațiune.

Acest tip de analiză este, evident, cel mai bine înainte ca solutia este dislocat vreodată la o fermă de SharePoint. Cu toate acestea, ca fumatul, nu este niciodată prea târziu pentru a începe să faci lucrurile corect. Că matricea a crea şi dezvolta un plan pentru a aborda scenarii lipsă de actualizare/ştergere. Poate fi o problemă greu de rezolvat, dar cel puţin voi aţi pus o casetă în jurul problema.

</scop>

Aboneaza-te la blog-ul meu.

Urmaţi-mă pe Twitter, la http://www.twitter.com/pagalvin

Technorati Tags:

Iute Fix: Servicii de web ca interacţiona cu SharePoint, InvalidOperationException

Un milion de ani în urmă, Am ajutat dezvoltat un serviciu web care s-a invocat printr-o acțiune particularizată pentru un flux de lucru SharePoint Designer. În această săptămână, Clientul a vrut să se mute la producţie (în cele din urmă!) aşa că am făcut.

Acțiune particularizată a lucrat bine, dar nu este invocat de servicii web, că ne-această eroare:

System.InvalidOperationException: Această operațiune poate fi efectuată doar pe un computer care este Unit la o fermă de servere utilizatorilor care au permisiuni în SQL Server pentru a citi din baza de date de configurare. Pentru a conecta acest server la ferma de servere, Utilizați expertul de configurare tehnologii și produse SharePoint, Situat în meniul Start în instrumentele Administrative.
la Microsoft.SharePoint.Administration.SPWebApplication.Lookup(Uri requestUri)

Se pare că am uitat să adăugaţi imagini la aplicații SharePoint în IIS. Odată ce am făcut-o, it worked fin.

Acest MSDN forum postarea mi-a dat indiciu am nevoie: http://social.msdn.microsoft.com/Forums/en-US/sharepointdevelopment/thread/2c97c004-7118-4e06-a62c-b2b0ac07ac99

</scop>

Aboneaza-te la blog-ul meu.

Urmaţi-mă pe twitter: http://twitter.com/pagalvin

Technorati Tags:

Rapid şi uşor: Obţine SPFolder de SPItemList

Am continua să fie difuzate în această problemă şi Google nu pare să înţeleagă ceea ce vreau să fac, aşa că am gândit aş scrie acest lucru în jos.

Am făcut o mulţime de eveniment receptor depanare în ultima săptămână sau două. ER este definit împotriva o bibliotecă de documente. Elementele individuale din biblioteca de documente sunt strâns legate de lor folderelor părinte. Deci, Mereu primesc dosarul elementului pentru diferitele manipulări. În timp ce depanare, Am nevoie pentru a actualiza metadatele unui dosar pentru un element specific al căror ID ştiu.

Aici este o mică aplicaţie consolă (proiectat pentru a rula pe server din fermă) care are două argumente: ID-ul de un element şi o valoare pentru a aloca un câmp, "Starea de aprobare". Greu coduri o mulţime de lucruri şi are nici o verificare de eroare.

Codul arata un site de greu codificate, devine o bibliotecă de documente greu codificate şi apoi găseşte elementul indicate. Apoi se găseşte folderul părinte al acelui element şi atribuie valoarea stare.

Cheie lecţie aici pentru mine este că SPItem nu obţine acces la folderul. Trebuie să utilizaţi SPListItem.File.

Dacă cineva îi pasă de a oferi o critică sau să sugereze o modalitate mai bună pentru a obţine în folderul de un element, vă rugăm să lăsaţi un comentariu.

<cod>
folosind Sistem;
folosind System.Collections.Generic;
folosind System.Text;
folosind Microsoft.SharePoint;
folosind System.Collections;

spaţiu de nume Conchango
{
    /// <Rezumat>
 /// </Rezumat>
 Clasa ManualFolderUpdate
    {
        statice nule Main(şir[] args)
        {
            şir uzzy = "ManualFolderUpdate (v1.0): "; // uzzy = "mesajul antet"

 Consola.WriteLine(uzzy + "Incepand de sus.  Am fost ultima modificare 04/08/08.");

            şir URL = http://localhost/xyzzy;

            folosind (SPSite oSPSite = noi SPSite(URL-ul))
            {

                folosind (SPWeb oSPWeb = oSPSite.OpenWeb())
                {
                    SPList.Update() docLib = oSPWeb.Lists["Documente"];

                    Consola.WriteLine(uzzy + "Am biblioteca de documente.");

                    Consola.WriteLine(uzzy + "Doc articolului lib conta: [" + docLib.ItemCount + "].");

                    int FolderID = 0;
                    şir NewStatus = "xyzzy";

                    FolderID = sistem.Conversia.ToInt32(args[0].ToString());
                    Consola.WriteLine("Căutând pliant pentru articol: [" + FolderID + "].");

                    SPListItem li = docLib.GetItemById(FolderID);

                    SPFolder thisItemFolder = li.File.ParentFolder;

                    Consola.WriteLine(uzzy + "Am folderul părinte.");

                    NewStatus = args[1].ToString();
                    Consola.WriteLine("Stabilirea statutului [" + NewStatus + "].");

                    Consola.WriteLine("Întoarcere a comite update sau CTRL-C pentru a abandona de presă.");

                    Consola.ReadLine();

                    thisItemFolder.Item["Starea de aprobare"] = NewStatus;
                    thisItemFolder.Item.Update();

                    Consola.WriteLine(uzzy + "Terminat actualizarea folderul.  Ieşirea.");

                } // folosind SPWeb

            } // folosind SPSite

 Consola.WriteLine(uzzy + "Terminat.");

        } // Main

    } // clasa foldersync
} // spaţiu de nume
</cod>

</scop>

Aboneaza-te la blog-ul meu.

Technorati Tags:

Ascunderea acţiuni particularizate din SharePoint

Câteva luni în urmă, în timp ce lucrează la un proiect pentru un client, Am creat o caracteristică. Printre alte lucruri, Această caracteristică definită o acțiune particularizată (acestea apar sub site-ului Setări). Singurul scop pentru această acțiune particularizată a fost să demonstreze că caracteristică de activare a fost funcţionează conform aşteptărilor. Practic, Am folosit-o ca o formă brută de depanare.

Mult de meu Jena, Acest artefact depanare a făcut drumul său de la dev UAT și de producția înainte de cineva a ajuns in jurul la cer, "ce este acest link xyzzy?"

Până acum, Suntem în producţie şi chiar nu vreau să dezinstalaţi caracteristica, fix elements.xml şi apoi reinstalaţi.

Todd sumbră a subliniat o modalitate uşoară de a descurc. În cuvintele sale:

"CustomActions nu sunt copiate în baza de date, acestea sunt citi direct din fişierul Elements.xml şi copiat în statul de aplicare la runtime. Deci, nu aveţi nevoie pentru a dezactiva, Dezinstalare, reinstalaţi, şi reactivaţi caracteristica de a elimina CustomAction. Doar elimina din fişierul Elements.xml şi reciclare piscina cerere(s) efectuată. Data viitoare când caracteristica este în domeniul de aplicare, nu puteţi vedea mai CustomAction."

Am urmat instrucţiunile acestuia şi, desigur, Ei lucrează.

În cazul meu, Acest lucru este un departament nivel de instalare cu doar un singur WFE. Dacă aţi găsit-te cu această problemă în viitor şi cu mai multe WFE, Cred că veţi avea de a face schimbarea în fiecare.

</scop>

Aboneaza-te la blog-ul meu.

Iute Fix: Accesarea site-ul SharePoint aruncă [HttpException (0x 80004005): Solicitare expirată.]

Unul dintre colegii mei de dezvoltator a fost de lucru pe un proiect în această săptămână şi a fugit într-o problemă de timeout în timp ce lucrează pe o parte web nebun de constructii. Său parte web a fost bine, dar "brusc" un site independent a devenit foarte lent şi frequently a expirat cu această eroare:

[HttpException (0x 80004005): Solicitare expirată.]

Am autentificat şi am văzut că mai multe alte site-uri au fost doar bine. Am suspectat că au existat unele părţi ascunse web pagină şi folosind de incredere ?conţinutul = 1 depanare tehnica, De fapt am gasit 11 părțile Web din pagina, doar două dintre care au fost vizibile. Chiar mai bine (dintr-o perspectivă let's-hope-I-find-something-ugly-here-that-I-can-fix), trei dintre aceste părți web închise a avut un nume de "Eroare".

Am şters acele părți web (care în sine a avut un surprinzator de mult timp) şi că rezolvat problema. For today 🙂

</scop>

Aboneaza-te la blog-ul meu.

Technorati Tags:

Invocă SSRS servicii Web la AAC / MUŞCHI în FBA mediu

Avem nevoie pentru a invoca "CreateSubscription" metoda o SSRS serviciu de web care este găzduit într-o FBA reuşit MOSS mediu la o parte web personalizată. Am pastrat obtinerea variante de:

  • 401: Nu sunt autorizate
  • Obiect mutat

"Obiectul mutat" mesajul a fost cel mai interesant, deoarece aceasta a fost spunând că "obiectul" (Serviciul nostru de SSRS) a "mutat" pentru login.aspx. Acest lucru a însemnat în mod clar am avut un fel de problemă de autentificare.

În cele din urmă am dat seama că am avut semn de carte-o intrare de blog de Robert Garret cele descrise cum se invocă un scop general AAC/MOSS web serviciu trăiesc în interiorul unui mediu FBA. Reţineţi că imposibil de legat direct la un articol (ca de 06/09/08) pentru că vrea să se autentifice. Link-ul am oferi te aduce la un "toate mesajele" Vezi si tu poate localiza articolul specifice de cercetare pentru "Accesarea MOSS Web Services utilizând autentificarea de baza forme".

Aici este codul care a lucrat pentru noi:

ReportingService2006 rs = nul; 
// Autentificare Autentificare auth = noi Autentificare(); 
auth.URL = "http://URL/_vti_bin/authentication.asmx";
auth.CookieContainer =
noi CookieContainer();
Rezultatul LoginResult = auth.Login("userid", "parola");
Dacă (rezultatul.ErrorCode == LoginErrorCode.NoError) 
{
// Nici o eroare, Deci, a lua cookie-urile.
CookieCollection cookie-uri = auth.CookieContainer.GetCookies(noi Uri(auth.URL-ul));
Cookie-ul authCookie = cookies[rezultatul.CookieName];
RS =
noi ReportingService2006();
RS.URL =
"http://server/_vti_bin/ReportServer/ReportService2006.asmx";
RS.CookieContainer =
noi CookieContainer();
RS.CookieContainer.Add(authCookie);
}
încercaţi
{
  RS.CreateSubscription(raport, extSettings, desc, eventType, matchData, parameters1);
}
prinde (Excepţie ex)
{
  Console.WriteLine(ex.Message.ToString());
}

Am interpreta lucruri de lucru de genul asta:

  • Partea noastră de web are nevoie de a dial-up serviciu de autentificare şi spun, "Hei, Tony, este de mine!".
  • Serviciul de autentificare răspunde zicând:, "Hei, Eu te cunosc. Cum sunt copiii? Aici este un simbol."
  • Vom apela la serviciul de SSRS şi spun, "Tony mi-a trimis, Aici este simbolul."

</scop>

Aboneaza-te la blog-ul meu.

Simplă şi rapidă: Asigurarea unui Site Web utilizând modelul de obiecte SharePoint în C#

I tried cercetare pentru un pic fragmentul de cod care ar arăta cum puteţi crea un SPWeb noi într-o colecţie de site-ul. Eu nu-l găsiţi rapid sau uşor, aşa cum am aşteptat Deci m-am gândit eu ar hârşti împreună un pic de intrare pe această temă.

Acest cod creează un nou site Wiki:

 SPSite siteCollection;

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

    SPWeb w = siteCollection.OpenWeb();

    w.Webs.Add("xyzzy", "xyzzy titlu",
        "xyzzy Descriere", 1033, SPWebTemplate.WebTemplateWIKI, fals, fals);

Căutările iniţială nu a reuşit pentru că am fost în căutarea pentru expresii ca "prestare de un site web folosind modelul de obiecte sharepoint" şi ca.

Dacă vă căutare pentru "Webs.Add()", veţi găsi un număr de intrări de blog foarte util, MSDN articole şi documentaţia SDK, care merge în profunzime pe acest subiect. Recomand cu siguranta acest site.

</scop>

Aboneaza-te la blog-ul meu.

Technorati Tags: