Kategori Arkiv: SharePoint udvikling

Én grund til "en eller flere felt typer ikke er installeret korrekt”

Jeg i går gør en lille tweak til en webdel, der gør en CAML forespørgsel mod en liste.  Jeg foretog ændringen, implementeret det og fik ramt med en fejl:

Der opstod en uventet fejl i de tre dag Outlook vejrudsigt webdel. Kontakt systemadministratoren. En eller flere felttyper er ikke installeret korrekt. Gå til siden listen Indstillinger for at slette disse felter.

Jeg stod overfor en anden oddball spørgsmålet tidligere, så jeg ikke straks oprette forbindelse min CAML query med de fejl, der SharePoint rapportering til mig.  Jeg gjorde en hurtig bing søgning og og fundet denne nyttige blogindlæg ved Sandeep Nahta  (http://snahta.blogspot.com/2009/01/one-or-more-field-types-are-not.html).

Her er de dårlige forespørgsel:

forespørgsel.Forespørgsel ="<Hvor><Og><Neq><FieldRef navn = 'Eller' /><Værdi Type = 'Text'>SFNY</Værdi><FieldRef navn = 'Eller' /><Værdi Type = 'Text'>SFIS</Værdi></Neq></Og></Hvor>";

Her er det fast:

forespørgsel.Forespørgsel ="<Hvor><Og><Neq><FieldRef navn = 'Eller' /><Værdi Type = 'Text'>SFNY</Værdi></Neq><Neq><FieldRef navn = 'Eller' /><Værdi Type = 'Text'>SFIS</Værdi></Neq></Og></Hvor>";

Så, moralen i historien er: Kontroller din CAML er korrekte, eller du kan få en oddball fejl.

Abonner på min blog.

Følg mig på kvidre på http://www.twitter.com/pagalvin

</slutningen>

SharePoint 2010 Løsning hænger i "implementering” Status

Jeg brugte PowerShell til at implementere en løsning til en SharePoint-farm (h/t:  Corey Roth og hans blog-indlæg). 

Derefter gik jeg til den centrale admin, adgang til Systemindstillinger og derefter "Administrer farm løsninger" til at implementere det til farmen og til min (lille) forfærdelse, det fik stukket i "implementering".

Jeg har set dette problem kommer mange gange på MSDN-foraene, så jeg var temmelig nervøse.  Jeg søgte omkring en bit og fundet denne nyttige artikel (af en tilsyneladende unattributed person fra http://www.resolutionsnet.co.uk/).  Jeg annulleret installation jobbet, og når jeg klikkede i løsningen, Det fortalte mig, at det med held havde indsat løsningen til tre af de fire servere i farmen.

Jeg gik til errant serveren, stoppes timertjenesten og genstartes det.  Windows server faktisk fortalte mig, at tjenesten ikke kunne besvare kommandoen, så der fortæller mig, at det var syge.

Denne gang, Når jeg gik tilbage til central administration, Jeg var i stand til at installere det med noget problem.

Forhåbentlig vil denne bit af info hjælpe nogle i en binde en af dagene.

</slutningen>

Abonner på min blog.

Følg mig på kvidre på http://www.twitter.com/pagalvin

Fejl af dagen: "Kan ikke tilføje den angivne Assembly til GAC”

Jeg har kæmpet en smule med visual studio 2010 på en en sp2010 løsning og fik denne fejl:

Der opstod fejl i installationen trin 'Tilføje løsning': Fejl: Kan ikke tilføje den angivne assembly til den globale assemblycache: YourAwesomeDLLThat IAmJustNotGoingToInstallRightNow.dll

Jeg gik til GAC selve (c:\windowsassembly) at forsøge at fjerne og fik fejlmeddelelsen "filen er i brug".

Jeg gjorde iisreset, Jeg hentede næsten Sysinternals, Jeg stoppede timertjenesten i services… endelig, Jeg bare lukkes og genåbnes, visual studio, selve og jeg endelig kunne lukke det.

</slutningen>

Abonner på min blog.

Følg mig på kvidre på http://www.twitter.com/pagalvin

Hurtig og nem: Fejlfinding VS 2010 Løsning implementering

Visual Studio 2010 rapporter hårdt at debug fejl under implementeringen nogle gange.  En hurtig og nem måde at gøre nogle meget uslebne fejlfinding er at kaste din egen navngivne undtagelser.  Visual Studio vil vise dem i konsollen output.

Overveje denne bit af kode:

image

Hvis denne funktion skal udføres på Webserverniveau et webprogram, webstedet vil være null.  Hvis du prøver og henvise til en egenskab af websted, Du får den tvetydige fejl:

Der opstod fejl i installationen trin 'Tilføje løsning': Objektreferencen er ikke indstillet til en forekomst af et objekt.

Dog, Hvis Udløs en undtagelse for nye og videregive en streng til konstruktøren, Du får en lidt mere nyttige meddelelse:

image

Det er en rå teknik, men temmelig hurtigt og nemt.

</slutningen>

Abonner på min blog.

Følg mig på kvidre på http://www.twitter.com/pagalvin

Timeren Job FeatureActivated og funktion anvendelsesområde

Jeg har arbejdet med nogle kode, der nogen udleveres til mig til et timeren job.  Han ikke havde forudsat aktiveringskoden faktiske funktion, så jeg var nødt til at skrive det, Selvfølgelig.  Jeg benyttede Andrew Connells berømte blogindlæg om emnet.

Jeg bruger Visual Studio 2010 og implementering holdt ikke med en fejl "der opstod fejl i installationen trin 'Tilføj løsning': Objektreferencen er ikke indstillet til en forekomst af et objekt. "

Jeg tog hans kode for bogstaveligt.  Jeg scoping funktionen til webprogramniveau, som vist:

image

Som et resultat, de egenskaber, der sendes til modtageren er fra web application, ikke en gruppe af websteder.  I sidste ende, koden ligner denne:

offentlige tilsidesætte void FeatureActivated(SPFeatureReceiverProperties egenskaber)
{

    // Ikke gøre følgende med web-app virkefelt funktioner, Det fører til fortvivlelse Smil
    // SPSite websted = egenskaber.Feature.Parent som SPSite;

    SPWebApplication wa = egenskaber.Feature.Parent som SPWebApplication;

    Hvis (WA == null) Udløs nye undtagelse("webapp2 er null.");

    foreach (SPJobDefinition job i wa.JobDefinitions)
    {

        Prøv
        {
            Hvis (job.Navn == List_JOB_NAME)

                job.Slette();
        }
        fangst (Undtagelse e)
        {
            Udløs nye undtagelse("mærke 2");
        } // fange undtagelse e
    }

    // installere jobbet

    WeatherForecastTimerJob weatherForecastTimerJob =
        nye WeatherForecastTimerJob(List_JOB_NAME, WA);

    SPMinuteSchedule tidsplan = nye SPMinuteSchedule();
    planlægge.BeginSecond = 0;
    planlægge.EndSecond = 59;
    planlægge.Interval = 5;
    weatherForecastTimerJob.Schedule = tidsplan;
    weatherForecastTimerJob.Update();

}

Nøglen take-away er, at når funktionen udføres på Webserverniveau en web app, den SPFeatureReceiverProperties, der SharePoint overfører til din funktion modtager har web app niveau parametre.  Andrews gamle blogindlæg antager det udføres på Webserverniveau samlingen websted.

</slutningen>

Abonner på min blog.

Følg mig på kvidre på http://www.twitter.com/pagalvin

Hvor er Microsoft.SharePoint.ApplicationPages.Administration.dll?

Jeg blev udleveret en visual studio-projekt, der henviser til Microsoft.SharePoint.ApplicationPages.Administration.dll.  Det tog mig en smule, mens for at finde det, og jeg tanker jeg deler.  I mit computermiljø, Det er placeret på:

c:\programmet c:ProgrammerFælles filerMicrosoft sharedweb server extensions14configadminbin

</slutningen>

Abonner på min blog.

Følg mig på kvidre på http://www.twitter.com/pagalvin

CodePlex projekt – SP2010 Explorer

Som en del af et igangværende forsøg på at få de tekniske lavt niveau oplysninger om SharePoint 2010, Jeg har oprettet en "SharePoint Explorer"slags værktøj.  Idéen er ikke ny.  Jeg brugte dette projekt mere end én gang: http://sharepointexplorer.codeplex.com/.  Min idé er at skabe en SharePoint version, bruger tilsluttet webdele for at vise alle de lavniveau detaljer at objektmodellen kan give. 

Dette blog-indlæg tjener som både en annoncering af projektet samt en opfordring til frivillige.  Hvis du er interesseret i at arbejde på dette projekt, Lad mig vide via e-mail (Galvin.Paul@gmail.com) og vi vil arbejde ud.

Her er projektet: http://sp2010explorer.codeplex.com/

</slutningen>

Abonner på min blog.

Følg mig på kvidre på http://www.twitter.com/pagalvin

Arbejder med TreeNodeBinding i ASP.NET Treeview kontrol

Jeg har arbejdet på hvad jeg håber bliver en snart frigivet CodePlex projekt, der giver en flot integreret bit af webdele taler til hinanden via udbyder og forbruger forbindelser med henblik på at udforske et SharePoint-websted under dynen.  (Dette er helt sikkert blevet gjort før, men det er en læring projekt så meget som noget andet).  Dette er tænkt som en erstatning for windows Stifindervisning af SharePoint 2010 dokumentbiblioteker.

Koden har den sædvanlige rekursive kalde ned SPWeb og SPLists fra en given startende punkt.  Det objekt, der gør alle der gennemkører opbygger en XML-streng, der ser noget som dette:

<SiteCollection url =’http://demo2010a:9090′>
 
<Web
     title = 'Hej verden sandkasse' 
     Skabelon =' et websted for hold hurtigt organisere, Forfatter, og dele oplysninger, BLAH BLAH BLAH ">

     <liste
        title ='BCC_Health_Services_FAQs’
        Skabelon ='CustomList’
       
listID =’http://demo2010a:9090/helloworldsandbox[delim]1e02b001-3cb2-4f17-b63d-7809e86b4174′>
    
</liste>

     <liste
        title = 'BCC_Notifications' 
        Skabelon = 'CustomList' 
        listID =’
http://demo2010a:9090/helloworldsandbox[delim]5a5a13d1 - 877c - 41c 0-9063-b9612be80d5e’>
     </liste>

  </Web>

</SiteCollection>

Jeg forventer at rydde op, at XML før alt er sagt og gjort.

Jeg vil i sidste ende får disse oplysninger op og ind i en Treeview control.  Ikke ligefrem jorden rystende ting.

Den udfordring, jeg tog på her skulle tilsluttes en XML-datakilde kontrol i stedet for manuelt at opbygge min treenodes som jeg krydse træet i træstrukturen.  Jeg gjorde dette, dels fordi jeg bevidst gør tingene sværere for mig selv (Dette er et projekt, læring efter alle) og dels fordi jeg har denne vage begreb at opbygge trænoderne som jeg krydse træet er ikke en god idé for på lang sigt.

Problemet med denne tilgang er, at kontrolelementet Treeview ikke ved om de gode attributter på de interessante noder som "liste" eller "web", så det viser dette output som standard:

 

image

Det er ikke nyttigt.  Dette er, hvor klassen TreeNodeBinding hjælper.  Jeg kan bruge dette til at fortælle Treeview kontrol hvordan det bør fortolke XML.  Her er et eksempel:

tnb = ny TreeNodeBinding();
tnb.DataMember = "liste"; // Dette er etiketten i XML-koden for et websted.
tnb.TargetField = "listid";
tnb.ValueField = "titel";
tnb.ToolTipField = "Skabelon";

Denne bindende fortæller treeview, når den finder en <liste> node i XML-, anvende bindings for TargetField, ValueField og ToolTipField.  I maj app, disse kort som følger:

  • TargetField: Når nogen klikker på en nodeværdi, Dette er hvad du får for SelectedNode.Value.  Dette er ikke at forveksle med...
  • ValueField: Dette er hvad du vil Treeview skal vises til brugeren.
  • ToolTipField: Værdien fra XML-filen, som du vil bruge et værktøjstip.

Tilføje, at TreeNodebinding til trævisningens DataBindings og du får output som dette:

 

image

Jeg vil have mere på alt dette som jeg videre med projektet og til sidst sætte dette op på Codeplex.

</slutningen>

Abonner på min blog.

Følg mig på kvidre på http://www.twitter.com/pagalvin

Forbinder tekst feltfiltre til din brugerdefineret webdel

Jeg vil gerne modtage oplysninger fra et tekstfelt filter i SharePoint 2010 i min brugerdefineret webdel.  Jeg forsøgt benytter denne MSDN-artikel som grundlag men artiklen er enten brækket eller jeg bare ikke følger det korrekt.

Lidt mere søgning dukkede op Mike Smith MSDN bidrag Her (http://social.msdn.microsoft.com/forums/en-us/sharepointdevelopment/thread/72F1732A-7F93-441E-8644-2E82BBB153D9).

Der er en masse ting derude på connectable webdele, men Mikes artikel er så simpelt som det bliver.

</slutningen>

Abonner på min blog.

Følg mig på kvidre på http://www.twitter.com/pagalvin

Hurtig og nem: Sende E-mail ved hjælp af Gmail SMTP-Server i.NET C#

Dette er ikke ligefrem et nyt emne, men når jeg havde brug at gøre det, Jeg fandt en masse "Hvorfor ikke vil dette arbejde for mig" og ikke alt for mange direkte svar. Jeg håber nogen finder dette nyttigt.

Den følgende bit i koden sender en e-mail ved hjælp af min egen gmail-konto til at gøre det, inklusive vedhæftede filer:

ved hjælp af System.Net.Mail;
ved hjælp af System.Net;

NetworkCredential loginInfo = nye NetworkCredential("[Min Gmail-ID]", "[Mit Gmail-adgangskode]");
Mail msg = nye Mail();
msg.Fra = nye Mail addresse("[M Gmail-Id]@gmail.com");
msg.To.Add(nye Mail addresse("paul.galvin@arcovis.com"));
msg. Emne = "Test infopath dev emne";
msg. Kroppen = "<HTML><kroppen><stærk>Et stærkt budskab.</stærk></kroppen></HTML>";
msg. IsBodyHtml = True;

foreach (streng aFile i NIPFD. GetAttachmentNamesAndLocations())
{
    msg. Attachments.Add(nye Vedhæftet fil(aFile));
} // Tilføje vedhæftede filer.

SmtpClient Client = nye SmtpClient("smtp.gmail.com");
klient. EnableSsl = True;
klient. UseDefaultCredentials = falsk;
klient. Legitimationsoplysninger = loginInfo;
klient. Port = 587;
klient. EnableSsl = True;
klient. Send(msg);

Et par centrale bits, som faldt mig ned og andre observationer / noter:

  • Den første linje, der opretter objektet loginInfo behov for at bruge gmail ID frataget "@gmail.com”. Så, Hvis min gmail email adresse er "sharepoint@gmail.com"og min adgangskode er"xyzzy"derefter linjen ville ligne:

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

  • Min gmail-konto er sat op til at bruge SSL, og der var ikke et problem.
  • Der er nogle modstridende oplysninger derude på hvilken port der skal bruges. Jeg brugt port 587 og det virkede fint for mig.
  • I mit tilfælde, Jeg har også brug for at sende vedhæftede filer. At NIPFD objekt har en metode, der ved, hvor mine vedhæftede filer. Det er at vende tilbage en fuldstændig sti (strømsparetilstand. "c:\tempattachment1.jpg". I min test, Jeg havde to vedhæftede filer og de begge arbejdede nobel.

Jeg har brugt visual studio 2008 at skrive denne kode.

</slutningen>

Abonner på min blog.

Følg mig på kvidre på http://www.twitter.com/pagalvin

Technorati Tags: ,,,