Arhive de categorii: Dezvoltarea SharePoint

Unul dintre motivele pentru „una sau mai multe câmp tipuri nu sunt instalate corect”

Am fost a face un mic tweak ieri la o parte de web care face o interogare de CAML împotriva o listă.  Am făcut schimbarea, l-a dislocat şi am lovit cu o eroare:

O eroare neașteptată a apărut în trei zile Outlook Prognoza Meteo WebPart. Vă rugăm să contactaţi administratorul de sistem. Unul sau mai multe tipuri de câmpuri nu sunt instalate în mod corespunzător. Du-te la pagina de Setări listă pentru a şterge aceste câmpuri.

I se confrunta cu o altă problemă de aiurit mai devreme astfel încât nu conecta imediat interogarea florin cu eroare care SharePoint de raportare a fost pentru mine.  Am făcut o scurtă căutare bing şi şi găsit acest post de blog util de Sandeep nikov  (http://snahta.blogspot.com/2009/01/one-or-more-field-types-are-not.html).

Aici este interogare rău:

interogare.Interogare ="<În cazul în care><Şi><NEQ><FieldRef nume = "Abr" Şispan >>< tip de valoare = "Text" > SFNY < / valoarea >< FieldRef nume ="Abr"/ >< tip de valoare ="Text" > SFIS < / valoarea >< / Neq >< / şi >< / unde >";><Tipul de valoare = "Text">SFNY</Valoarea><FieldRef nume = "Abr" Şispan >>< tip de valoare = "Text" > SFNY < / valoarea >< FieldRef nume ="Abr"/ >< tip de valoare ="Text" > SFIS < / valoarea >< / Neq >< / şi >< / unde >";><Tipul de valoare = "Text">SFIS</Valoarea></NEQ></Şi></În cazul în care>";

Aici este fix:

interogare.Interogare ="<În cazul în care><Şi><NEQ><FieldRef nume = "Abr" Şispan >>< tip de valoare = "Text" > SFNY < / valoarea >< FieldRef nume ="Abr"/ >< tip de valoare ="Text" > SFIS < / valoarea >< / Neq >< / şi >< / unde >";><Tipul de valoare = "Text">SFNY</Valoarea></NEQ><NEQ><FieldRef nume = "Abr" Şispan >>< tip de valoare = "Text" > SFNY < / valoarea >< FieldRef nume ="Abr"/ >< tip de valoare ="Text" > SFIS < / valoarea >< / Neq >< / şi >< / unde >";><Tipul de valoare = "Text">SFIS</Valoarea></NEQ></Şi></În cazul în care>";

Deci, morale din poveste este: Asiguraţi-vă că vă florin este corect sau este posibil să primiţi o eroare de aiurit.

Aboneaza-te la blog-ul meu.

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

</scop>

SharePoint 2010 Soluție blocat în "implementarea” Statutul

Am folosit PowerShell pentru a implementa o soluţie la o ferma de SharePoint (h/t:  Corey Roth şi a lui blog-ul). 

Am mers apoi la admin centrală, accesat setările de sistem şi apoi "Manage fermă soluţii" a se disloca la fermă și meu (ușoare) consternarea, l-am împotmolit în "implementarea".

Am văzut această problemă veni de multe ori pe forumuri MSDN, Deci, am fost destul de nervos despre el.  Am căutat în jurul un pic şi găsit acest articol util (de o persoana aparent neatribuite la http://www.resolutionsnet.co.uk/).  Am anulat activității de implementare şi când am făcut clic în soluţie, mi-a spus că ea a implementat cu succes soluţia la trei dintre cele patru servere în fermă.

M-am dus la server rătăcitor, Serviciul de contorizare a oprit şi a repornit.  Ferestre a servi de fapt mi-a spus că serviciul nu a reuşit să răspundă la comanda, aşa că mi-a spus că a fost bolnav.

de data aceasta, Când am mers inapoi la centrul admin, Am fost capabili de a se implica cu nici o problema.

Sperăm că acest pic de informaţii va ajuta unii într-o capcană de zile.

</scop>

Aboneaza-te la blog-ul meu.

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

Eroare de zi: "Nu pot adăuga Adunarea specificate la GAC”

Am fost luptă un pic cu visual studio 2010 pe o soluţie sp2010 şi a fost achiziþie această eroare:

Eroare în implementare pas "Adauga soluţie": Eroare: Imposibil de adăugat Adunarea specificate în cache de adunare global: YourAwesomeDLLThat IAmJustNotGoingToInstallRightNow.dll

M-am dus la GAC sine (c:\windowsassembly) pentru a încerca şi de a elimina şi a luat o eroare "fişier în uz".

Am făcut o iisreset, Am descarcat de aproape Sysinternals Sysinternals, M-am oprit serviciul timer în services… în cele din urmă, Tocmai am închis şi a redeschis visual studio sine şi am fost în cele din urmă să închideţi-l.

</scop>

Aboneaza-te la blog-ul meu.

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

Rapid şi uşor: Depanare VS 2010 Soluție de implementare

Visual Student 2010 rapoarte greu de depanare erori în timpul desfășurării unele de ori.  Un mod rapid şi uşor pentru a face unele foarte dur depanare este de a arunca propriul numit excepţii.  Visual Student va arata-le în Consola de ieşire.

Luaţi în considerare acest bit de cod:

image

Dacă această caracteristică este scoped într-o aplicaţie web, site-ul va fi nulă.  Dacă încercaţi şi o proprietate de site-ul de referinţă, veţi primi eroarea ambigue:

Eroare în implementare pas "Adauga soluţie": Obiectul de referinţă nu setat la o instanţă a unui obiect.

Cu toate acestea, Daca arunca o nouă excepţie şi se trece un şir la constructorul, tu a lua un mesaj ceva mai util:

image

Este o tehnica de brut, dar destul de rapid şi uşor.

</scop>

Aboneaza-te la blog-ul meu.

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

FeatureActivated de Job cronometrul şi caracteristica de aplicare

Am fost de lucru cu unele cod că cineva predat-o la mine pentru o activitate de cronometrare.  El nu ar fi furnizate codul de activare reală caracteristică, aşa că a trebuit să-l scrie, desigur.  Am profitat de Andrew Connell celebru blog post pe această temă.

Eu sunt, folosind Visual Studio 2010 şi implementare păstrate în lipsa cu o eroare "Eroare în implementare pas"Adăugare soluție": Obiectul de referinţă nu setat la o instanţă a unui obiect."

Am fost luaţi codul lui prea literal.  Am fost definire caracteristica la nivel de aplicatie web, ca:

image

Ca rezultat al, proprietăţi care sunt trimise la receptor sunt la aplicația web, nu o colecție de site-ul.  În cele din urmă, codul Arată astfel:

publice suprascriu nule FeatureActivated(Proprietăți SPFeatureReceiverProperties)
{

    // Nu fac următoarele cu web app scoped caracteristici, Aceasta conduce la disperare Zâmbet
    // Site-ul SPSite = proprietăţi.Feature.Parent ca SPSite;

    SPWebApplication wa = proprietăţi.Feature.Parent ca SPWebApplication;

    Dacă (WA == null) arunca nouă excepţie("webapp2 este nul.");

    foreach (SPJobDefinition locuri de muncă în wa.JobDefinitions)
    {

        încercaţi
        {
            Dacă (locuri de muncă.Numele == List_JOB_NAME)

                locuri de muncă.Ştergeţi();
        }
        prinde (Excepţie e)
        {
            arunca nouă excepţie("gabarit 2");
        } // prinde excepţie e
    }

    // instalaţi locuri de muncă

    WeatherForecastTimerJob weatherForecastTimerJob =
        noi WeatherForecastTimerJob(List_JOB_NAME, WA);

    Programul de SPMinuteSchedule = nou SPMinuteSchedule();
    Programul.BeginSecond = 0;
    Programul.EndSecond = 59;
    Programul.Interval = 5;
    weatherForecastTimerJob.Schedule = programul;
    weatherForecastTimerJob.Update();

}

Cheia take-away este că atunci când caracteristica este scoped la un web app, SPFeatureReceiverProperties care SharePoint trece la receptorul caracteristică a web app nivel parametri.  Andrew pe vechiul blog intrare îşi asumă ea este scoped la colecția de site-ul.

</scop>

Aboneaza-te la blog-ul meu.

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

În cazul în care este Microsoft.SharePoint.ApplicationPages.Administration.dll?

I a fost înmânat un proiect visual studio, care face referire la Microsoft.SharePoint.ApplicationPages.Administration.dll.  Mi-a luat un pic în timp ce pentru a găsi o şi am crezut că mi-ar parts.  În mediul meu, Acesta este situat la:

c:\Programul filescommon filesmicrosoft sharedweb server extensions14configadminbin

</scop>

Aboneaza-te la blog-ul meu.

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

Proiectul CodePlex – SP2010 Explorer

Ca parte a unui efort continuu pentru a afla detalii tehnice de nivel scăzut de SharePoint 2010, Am creat o "SharePoint Explorer"un fel de instrument.  Ideea nu este nouă.  Am folosit acest proiect de mai multe ori: http://sharepointexplorer.codeplex.com/.  Ideea mea este de a crea o versiune de SharePoint care utilizează conectate părți web pentru a arăta toate detaliile low-level că modelul de obiecte poate oferi. 

Acest blog post serveşte ca atât un anunţ de proiect, precum şi un apel la voluntari.  Dacă sunteţi interesat de lucru pe acest proiect, Anunta-ma prin e-mail (Galvin.Paul@gmail.com) şi vom lucra l.

Aici este proiectul: http://sp2010explorer.codeplex.com/

</scop>

Aboneaza-te la blog-ul meu.

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

De lucru cu TreeNodeBinding în ASP.NET Treeview de Control

Am fost de lucru pe ceea ce sper că va fi o în curând-a lansat CodePlex Proiectul care prevede un pic frumos integrate de părți web care vorbesc între ele prin conexiuni de furnizor/consumator cu scopul de a explora un site SharePoint sub patura.  (Acest lucru a fost făcut cu siguranţă înainte, dar acesta este un proiect de învăţare fel de mult ca orice altceva).  Acest lucru este menit a fi un replacement pentru ferestre explorer vedere de SharePoint 2010 biblioteci de documente.

Codul are recursive obicei apel in jos SPWeb şi SPLists la incepand un anumit punct.  Obiectul care face toate că traversează se acumulează un şir de XML care arata ceva de genul:

<SiteCollection url =’http://demo2010a:9090′>
 
<Web
     title = "Hello World Sandbox" 
     Şablon = "un site pentru echipele să organizeze rapid, autor, şi partaja informaţii, BLAH BLAH BLAH ">

     <lista
        title = "BCC_Health_Services_FAQs’
        Şablon ='CustomList’
       
ListId =’http://demo2010a:9090/helloworldsandbox[delim]1e02b001-3cb2-4f17-b63d-7809e86b4174′>
    
</lista>

     <lista
        title = "BCC_Notifications" 
        Şablon = "CustomList" 
        ListId =’
http://demo2010a:9090/helloworldsandbox[delim]5a5a13d1 - 877c - 41c 0-9063-b9612be80d5e’>
     </lista>

  </Web>

</SiteCollection>

Mă aştept să curăţaţi sus că XML înainte de toate este spus şi făcut.

Vreau să ajung în cele din urmă că informaţiile sus şi într-un control Treeview.  Nu exact pământ zguduitor chestii.

Provocare pe care mi-am luat pe aici a fost de a conecta ierarhică a unui control sursă de date XML în loc de manual construirea treenodes meu ca am traversa copac.  Am făcut acest lucru, parţial pentru că am în mod deliberat face lucruri mai greu pe mine (Acesta este un proiect de învăţare după toate) şi parţial pentru că am această noţiune vagă că construirea nodurile arborelui aşa cum am parcurge copac nu este o idee bună pentru termen lung.

Problema cu această abordare este că controlul Treeview nu ştie despre atributele bun pe nodurile interesant ca "lista" sau "web", astfel încât ea arată această ieşire în mod implicit:

 

image

Asta nu este utilă.  Acest lucru este în cazul în care vă ajută la clasa de TreeNodeBinding.  Pot folosi acest lucru să spun controlul Treeview modul în care aceasta ar trebui să interpreta XML.  Iată un exemplu:

tnb = nou TreeNodeBinding();
tnb.DataMember = "lista"; // Aceasta este eticheta în xml pentru un site.
tnb.TargetField = "listid";
tnb.ValueField = "titlul";
tnb.ToolTipField = "Şablon";

Acest legarea spune treeview că, atunci când constată o <lista> nod în XML, Aplicaţi legături pentru TargetField, ValueField şi ToolTipField.  În mai app, Acestea harta după cum urmează:

  • TargetField: Când cineva face clic pe o valoare de nod, Aceasta este ceea ce veţi obţine pentru SelectedNode.Value.  Acest lucru este de a nu se confunda cu...
  • ValueField: Aceasta este ceea ce vrei Treeview de afișat utilizatorului.
  • ToolTipField: Valoarea din XML-ul pe care doriţi ca un sfat ecran.

Adauga că TreeNodebinding ierarhică pe DataBindings şi veţi obţine de ieşire ca aceasta:

 

image

Voi avea mai mult pe toate acestea ca am continua la proiect şi în cele din urmă acest lucru pus pe Codeplex.

</scop>

Aboneaza-te la blog-ul meu.

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

Conectarea textul filtrele de câmp la partea ta Custom Web

Am vrut să primească informații de la un filtru de câmp Text în SharePoint 2010 în partea mea web particularizate.  Am încercat folosind Acest articol MSDN ca bază dar articolul este fie defalcate sau nu doar eu sunt următoarele corect.

Un pic mai căutarea sa transformat în sus Mike Smith MSDN contribuţia aici (http://social.msdn.microsoft.com/forums/en-us/sharepointdevelopment/thread/72F1732A-7F93-441E-8644-2E82BBB153D9).

Există o mulţime de lucruri acolo pe părți web debroşabil, dar Mike pe articol este la fel de simplu ca acesta devine.

</scop>

Aboneaza-te la blog-ul meu.

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

Rapid şi uşor: Trimite E-mail folosind serverul de SMTP Gmail în .NET C#

Acest lucru nu este exact un subiect nou, dar când am nevoie pentru a face acest lucru, Am găsit o mulţime de "de ce nu vor acest lucru pentru mine" si nu prea multe raspunsuri directe. Sper ca cineva găseşte acest lucru util.

Următoarele pic de cod va trimite un e-mail folosind contul de gmail propria se face, inclusiv accesorii:

folosind System.Net.Mail;
folosind System.Net;

NetworkCredential loginInfo = noi NetworkCredential("[ID-ul meu Gmail]", "[Parola Gmail]");
MailMessage MSG = noi MailMessage();
msg.La = noi MailAddress("[M Gmail identitate]@gmail.com");
msg.To.Add(noi MailAddress("paul.galvin@arcovis.com < script-ul cf-hash = tip"f9e31"=" text/javascript"> / *  * /"));
msg. Subiect = "Test subiect de dev infopath";
msg. Corp = "<HTML><corpul><puternic>Un mesaj puternic.</puternic></corpul></HTML>";
msg. IsBodyHtml = adevărat;

foreach (şir aFile în NIPFD. GetAttachmentNamesAndLocations())
{
    msg. Attachments.Add(noi Ataşament(aFile));
} // Adăugând ataşări.

SmtpClient clientul = noi SmtpClient("smtp.gmail.com");
clientul.EnableSsl = adevărat;
clientul.UseDefaultCredentials = fals;
clientul.Acreditări = loginInfo;
clientul.Port = 587;
clientul.EnableSsl = adevărat;
clientul.Trimite(MSG);

Câteva biţi cheie care mi-a încetinit şi alte observaţii / note:

  • Prima linie care creează obiecte loginInfo trebuie să folosiţi gmail ID deposedat de "@gmail.com”. Deci, în cazul în care este adresa mea de e-mail gmail "a sharepoint@gmail.com"si parola este"xyzzy"apoi linia ar arata ca:

NetworkCredential loginInfo = noi NetworkCredential("sharepoint", "xyzzy");

  • Contul gmail este parametrizată pentru a utiliza SSL şi care nu a fost o problemă.
  • Există unele informaţii contradictorii acolo pe ce port pentru a utiliza. Am folosit portul 587 şi it worked fin pentru mine.
  • În cazul meu, De asemenea, am nevoie pentru a trimite ataşări. Că NIPFD obiect are o metodă care stie unde sunt ataşamentele mele. Acesta se întoarce o cale complet (ex. "c:\tempattachment1.jpg". În mea de test, Am avut două ataşamente şi ambele au lucrat bine.

Am folosit visual studio 2008 pentru a scrie acest cod.

</scop>

Aboneaza-te la blog-ul meu.

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

Technorati Tags: ,,,